From ef99059554b65c20ee4e7bf1a04679432b128797 Mon Sep 17 00:00:00 2001
From: Raphael Memmesheimer <raphael@uni-koblenz.de>
Date: Tue, 15 Sep 2015 11:08:15 +0200
Subject: [PATCH] Trimmed the branch to only the homer_map_manager sub
 directory

---
 .../CHANGELOG.rst => CHANGELOG.rst            |    0
 .../CMakeLists.txt => CMakeLists.txt          |    0
 README.md                                     |   45 +-
 .../config => config}/custom.xml              |    0
 .../config => config}/default.xml             |    0
 .../config => config}/merged.xml              |    0
 homer_map_manager/README.md                   |   42 -
 homer_mapnav_msgs/CHANGELOG.rst               |    8 -
 homer_mapnav_msgs/CMakeLists.txt              |   33 -
 homer_mapnav_msgs/README.md                   |  244 ---
 homer_mapnav_msgs/mainpage.dox                |   14 -
 homer_mapnav_msgs/manifest.xml                |   16 -
 .../msg/DeletePointOfInterest.msg             |    1 -
 homer_mapnav_msgs/msg/DoMapping.msg           |    1 -
 homer_mapnav_msgs/msg/MapLayers.msg           |    7 -
 homer_mapnav_msgs/msg/ModifyMap.msg           |   17 -
 homer_mapnav_msgs/msg/ModifyPOI.msg           |    2 -
 homer_mapnav_msgs/msg/NavigateToPOI.msg       |    3 -
 homer_mapnav_msgs/msg/PointOfInterest.msg     |   13 -
 homer_mapnav_msgs/msg/PointsOfInterest.msg    |    1 -
 homer_mapnav_msgs/msg/RegionOfInterest.msg    |   12 -
 homer_mapnav_msgs/msg/RegionsOfInterest.msg   |    1 -
 homer_mapnav_msgs/msg/StartNavigation.msg     |    4 -
 homer_mapnav_msgs/msg/StopNavigation.msg      |    0
 homer_mapnav_msgs/msg/TargetUnreachable.msg   |    9 -
 homer_mapnav_msgs/package.xml                 |   23 -
 homer_mapnav_msgs/readme.pdf                  |  Bin 121801 -> 0 bytes
 homer_mapnav_msgs/srv/GetPointsOfInterest.srv |    2 -
 .../srv/GetRegionsOfInterest.srv              |    2 -
 homer_mapnav_msgs/srv/LoadMap.srv             |    2 -
 homer_mapnav_msgs/srv/SaveMap.srv             |    2 -
 homer_mapping/CHANGELOG.rst                   |    8 -
 homer_mapping/CMakeLists.txt                  |   45 -
 homer_mapping/README.md                       |   67 -
 homer_mapping/config/homer_mapping.yaml       |   30 -
 .../config/homer_mapping_followme.yaml        |    8 -
 homer_mapping/launch/homer_mapping.launch     |    5 -
 .../launch/homer_mapping_followme.launch      |    5 -
 homer_mapping/launch/homer_mapping_ros.launch |    5 -
 .../launch/homer_mapping_rviz.launch          |    6 -
 homer_mapping/mainpage.dox                    |   26 -
 homer_mapping/manifest.xml                    |   23 -
 homer_mapping/package.xml                     |   34 -
 homer_mapping/readme.pdf                      |  Bin 113506 -> 0 bytes
 homer_mapping/src/CMakeLists.txt              |    2 -
 homer_mapping/src/OccupancyMap/CMakeLists.txt |   31 -
 homer_mapping/src/OccupancyMap/Math/Box2D.h   |  184 ---
 .../src/OccupancyMap/Math/CMakeLists.txt      |   17 -
 .../src/OccupancyMap/Math/Circle2D.cpp        |   84 -
 .../src/OccupancyMap/Math/Circle2D.h          |   53 -
 .../src/OccupancyMap/Math/Homography.cpp      |  109 --
 .../src/OccupancyMap/Math/Homography.h        |   49 -
 .../src/OccupancyMap/Math/Line2D.cpp          |   99 --
 homer_mapping/src/OccupancyMap/Math/Line2D.h  |  223 ---
 homer_mapping/src/OccupancyMap/Math/Math.cpp  |  135 --
 homer_mapping/src/OccupancyMap/Math/Math.h    |  129 --
 .../src/OccupancyMap/Math/Matrix.cpp          |   23 -
 homer_mapping/src/OccupancyMap/Math/Matrix.h  |  116 --
 homer_mapping/src/OccupancyMap/Math/Obb2D.cpp |  149 --
 homer_mapping/src/OccupancyMap/Math/Obb2D.h   |   33 -
 homer_mapping/src/OccupancyMap/Math/Pixel.h   |   59 -
 .../src/OccupancyMap/Math/Point2D.cpp         |   33 -
 homer_mapping/src/OccupancyMap/Math/Point2D.h |  312 ----
 .../src/OccupancyMap/Math/Polygon2D.cpp       |  131 --
 .../src/OccupancyMap/Math/Polygon2D.h         |   76 -
 homer_mapping/src/OccupancyMap/Math/Pose.cpp  |  117 --
 homer_mapping/src/OccupancyMap/Math/Pose.h    |   74 -
 .../OccupancyMap/Math/Transformation2D.cpp    |  308 ----
 .../src/OccupancyMap/Math/Transformation2D.h  |  144 --
 .../src/OccupancyMap/Math/Vector3D.cpp        |   58 -
 .../src/OccupancyMap/Math/Vector3D.h          |   82 -
 homer_mapping/src/OccupancyMap/Math/mat2.h    |   77 -
 .../src/OccupancyMap/Math/mat2_inl.h          |   86 -
 homer_mapping/src/OccupancyMap/Math/mat3.cpp  |  189 ---
 homer_mapping/src/OccupancyMap/Math/mat3.h    |   76 -
 homer_mapping/src/OccupancyMap/Math/mat3.inl  |   44 -
 homer_mapping/src/OccupancyMap/Math/misc.cpp  |  390 -----
 homer_mapping/src/OccupancyMap/Math/misc.h    |   32 -
 homer_mapping/src/OccupancyMap/Math/vec2.h    |  189 ---
 .../src/OccupancyMap/Math/vec3_inl.h          |  179 ---
 .../src/OccupancyMap/OccupancyMap.cpp         |  931 -----------
 homer_mapping/src/OccupancyMap/OccupancyMap.h |  379 -----
 .../src/ParticleFilter/CMakeLists.txt         |   18 -
 .../src/ParticleFilter/HyperSlamFilter.cpp    |  191 ---
 .../src/ParticleFilter/HyperSlamFilter.h      |  163 --
 homer_mapping/src/ParticleFilter/Particle.cpp |   10 -
 homer_mapping/src/ParticleFilter/Particle.h   |   64 -
 .../src/ParticleFilter/ParticleFilter.h       |  310 ----
 .../src/ParticleFilter/SlamFilter.cpp         |  653 --------
 homer_mapping/src/ParticleFilter/SlamFilter.h |  314 ----
 .../src/ParticleFilter/SlamParticle.cpp       |   30 -
 .../src/ParticleFilter/SlamParticle.h         |   72 -
 homer_mapping/src/slam_node.cpp               |  318 ----
 homer_mapping/src/slam_node.h                 |  186 ---
 homer_nav_libs/CHANGELOG.rst                  |    8 -
 homer_nav_libs/CMakeLists.txt                 |   29 -
 homer_nav_libs/README.md                      |   13 -
 homer_nav_libs/package.xml                    |   19 -
 homer_nav_libs/readme.pdf                     |  Bin 79468 -> 0 bytes
 homer_nav_libs/src/Explorer/CMakeLists.txt    |    5 -
 homer_nav_libs/src/Explorer/Explorer.cpp      | 1426 -----------------
 homer_nav_libs/src/Explorer/Explorer.h        |  355 ----
 homer_nav_libs/src/Explorer/GridMap.h         |  575 -------
 homer_nav_libs/src/Math/Box2D.h               |  184 ---
 homer_nav_libs/src/Math/CMakeLists.txt        |    9 -
 homer_nav_libs/src/Math/Line2D.cpp            |   99 --
 homer_nav_libs/src/Math/Line2D.h              |  223 ---
 homer_nav_libs/src/Math/Math.cpp              |  135 --
 homer_nav_libs/src/Math/Math.h                |  129 --
 homer_nav_libs/src/Math/Pixel.h               |   59 -
 homer_nav_libs/src/Math/Point2D.cpp           |   33 -
 homer_nav_libs/src/Math/Point2D.h             |  312 ----
 homer_nav_libs/src/Math/Pose.cpp              |  117 --
 homer_nav_libs/src/Math/Pose.h                |   74 -
 homer_nav_libs/src/Math/Transformation2D.cpp  |  308 ----
 homer_nav_libs/src/Math/Transformation2D.h    |  144 --
 homer_nav_libs/src/Math/mat2.h                |   77 -
 homer_nav_libs/src/Math/mat2_inl.h            |   86 -
 homer_nav_libs/src/Math/vec2.h                |  189 ---
 .../src/SpeedControl/CMakeLists.txt           |    5 -
 .../src/SpeedControl/SpeedControl.cpp         |  177 --
 .../src/SpeedControl/SpeedControl.h           |   71 -
 homer_nav_libs/src/tools/tools.h              |  258 ---
 homer_navigation/CHANGELOG.rst                |    8 -
 homer_navigation/CMakeLists.txt               |   29 -
 homer_navigation/README.md                    |   79 -
 homer_navigation/config/homer_navigation.yaml |   48 -
 .../config/homer_navigation_followme.yaml     |   14 -
 .../homer_navigation/homer_navigation_node.h  |  372 -----
 .../launch/homer_navigation.launch            |    4 -
 .../launch/homer_navigation_followme.launch   |    4 -
 .../launch/homer_navigation_ros.launch        |    6 -
 homer_navigation/package.xml                  |   34 -
 homer_navigation/readme.pdf                   |  Bin 118724 -> 0 bytes
 .../src/homer_navigation_node.cpp             | 1069 ------------
 .../images => images}/rosgraph.png            |  Bin
 .../images => images}/rosgraph.svg            |    0
 .../mainpage.dox => mainpage.dox              |    0
 .../manifest.xml => manifest.xml              |    0
 homer_map_manager/package.xml => package.xml  |    0
 homer_map_manager/readme.pdf => readme.pdf    |  Bin
 .../src => src}/Managers/CMakeLists.txt       |    0
 .../src => src}/Managers/MapManager.cpp       |    0
 .../src => src}/Managers/MapManager.h         |    0
 .../src => src}/Managers/MaskingManager.cpp   |    0
 .../src => src}/Managers/MaskingManager.h     |    0
 .../src => src}/Managers/PoiManager.cpp       |    0
 .../src => src}/Managers/PoiManager.h         |    0
 .../src => src}/Managers/RoiManager.cpp       |    0
 .../src => src}/Managers/RoiManager.h         |    0
 .../src => src}/MapIO/CMakeLists.txt          |    0
 .../src => src}/MapIO/image_loader.cpp        |    0
 .../src => src}/MapIO/image_loader.h          |    0
 .../src => src}/MapIO/map_loader.cpp          |    0
 .../src => src}/MapIO/map_loader.h            |    0
 .../src => src}/MapIO/map_saver.cpp           |    0
 .../src => src}/MapIO/map_saver.h             |    0
 .../Workers/PointOfInterest/CMakeLists.txt    |    0
 .../Workers/PointOfInterest/PointOfInterest.h |    0
 {homer_map_manager/src => src}/main.cpp       |    0
 .../src => src}/map_manager_node.cpp          |    0
 .../src => src}/map_manager_node.h            |    0
 162 files changed, 42 insertions(+), 15241 deletions(-)
 rename homer_map_manager/CHANGELOG.rst => CHANGELOG.rst (100%)
 rename homer_map_manager/CMakeLists.txt => CMakeLists.txt (100%)
 rename {homer_map_manager/config => config}/custom.xml (100%)
 rename {homer_map_manager/config => config}/default.xml (100%)
 rename {homer_map_manager/config => config}/merged.xml (100%)
 delete mode 100644 homer_map_manager/README.md
 delete mode 100644 homer_mapnav_msgs/CHANGELOG.rst
 delete mode 100644 homer_mapnav_msgs/CMakeLists.txt
 delete mode 100644 homer_mapnav_msgs/README.md
 delete mode 100644 homer_mapnav_msgs/mainpage.dox
 delete mode 100644 homer_mapnav_msgs/manifest.xml
 delete mode 100644 homer_mapnav_msgs/msg/DeletePointOfInterest.msg
 delete mode 100644 homer_mapnav_msgs/msg/DoMapping.msg
 delete mode 100644 homer_mapnav_msgs/msg/MapLayers.msg
 delete mode 100644 homer_mapnav_msgs/msg/ModifyMap.msg
 delete mode 100644 homer_mapnav_msgs/msg/ModifyPOI.msg
 delete mode 100644 homer_mapnav_msgs/msg/NavigateToPOI.msg
 delete mode 100644 homer_mapnav_msgs/msg/PointOfInterest.msg
 delete mode 100644 homer_mapnav_msgs/msg/PointsOfInterest.msg
 delete mode 100644 homer_mapnav_msgs/msg/RegionOfInterest.msg
 delete mode 100644 homer_mapnav_msgs/msg/RegionsOfInterest.msg
 delete mode 100644 homer_mapnav_msgs/msg/StartNavigation.msg
 delete mode 100644 homer_mapnav_msgs/msg/StopNavigation.msg
 delete mode 100644 homer_mapnav_msgs/msg/TargetUnreachable.msg
 delete mode 100644 homer_mapnav_msgs/package.xml
 delete mode 100644 homer_mapnav_msgs/readme.pdf
 delete mode 100644 homer_mapnav_msgs/srv/GetPointsOfInterest.srv
 delete mode 100644 homer_mapnav_msgs/srv/GetRegionsOfInterest.srv
 delete mode 100644 homer_mapnav_msgs/srv/LoadMap.srv
 delete mode 100644 homer_mapnav_msgs/srv/SaveMap.srv
 delete mode 100644 homer_mapping/CHANGELOG.rst
 delete mode 100644 homer_mapping/CMakeLists.txt
 delete mode 100644 homer_mapping/README.md
 delete mode 100644 homer_mapping/config/homer_mapping.yaml
 delete mode 100644 homer_mapping/config/homer_mapping_followme.yaml
 delete mode 100644 homer_mapping/launch/homer_mapping.launch
 delete mode 100644 homer_mapping/launch/homer_mapping_followme.launch
 delete mode 100644 homer_mapping/launch/homer_mapping_ros.launch
 delete mode 100644 homer_mapping/launch/homer_mapping_rviz.launch
 delete mode 100644 homer_mapping/mainpage.dox
 delete mode 100644 homer_mapping/manifest.xml
 delete mode 100644 homer_mapping/package.xml
 delete mode 100644 homer_mapping/readme.pdf
 delete mode 100644 homer_mapping/src/CMakeLists.txt
 delete mode 100644 homer_mapping/src/OccupancyMap/CMakeLists.txt
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Box2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/CMakeLists.txt
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Circle2D.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Circle2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Homography.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Homography.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Line2D.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Line2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Math.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Math.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Matrix.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Matrix.h
 delete mode 100755 homer_mapping/src/OccupancyMap/Math/Obb2D.cpp
 delete mode 100755 homer_mapping/src/OccupancyMap/Math/Obb2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Pixel.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Point2D.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Point2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Polygon2D.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Polygon2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Pose.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Pose.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Transformation2D.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Transformation2D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Vector3D.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/Vector3D.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/mat2.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/mat2_inl.h
 delete mode 100755 homer_mapping/src/OccupancyMap/Math/mat3.cpp
 delete mode 100755 homer_mapping/src/OccupancyMap/Math/mat3.h
 delete mode 100755 homer_mapping/src/OccupancyMap/Math/mat3.inl
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/misc.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/misc.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/vec2.h
 delete mode 100644 homer_mapping/src/OccupancyMap/Math/vec3_inl.h
 delete mode 100644 homer_mapping/src/OccupancyMap/OccupancyMap.cpp
 delete mode 100644 homer_mapping/src/OccupancyMap/OccupancyMap.h
 delete mode 100644 homer_mapping/src/ParticleFilter/CMakeLists.txt
 delete mode 100755 homer_mapping/src/ParticleFilter/HyperSlamFilter.cpp
 delete mode 100755 homer_mapping/src/ParticleFilter/HyperSlamFilter.h
 delete mode 100644 homer_mapping/src/ParticleFilter/Particle.cpp
 delete mode 100644 homer_mapping/src/ParticleFilter/Particle.h
 delete mode 100644 homer_mapping/src/ParticleFilter/ParticleFilter.h
 delete mode 100644 homer_mapping/src/ParticleFilter/SlamFilter.cpp
 delete mode 100644 homer_mapping/src/ParticleFilter/SlamFilter.h
 delete mode 100644 homer_mapping/src/ParticleFilter/SlamParticle.cpp
 delete mode 100644 homer_mapping/src/ParticleFilter/SlamParticle.h
 delete mode 100644 homer_mapping/src/slam_node.cpp
 delete mode 100644 homer_mapping/src/slam_node.h
 delete mode 100644 homer_nav_libs/CHANGELOG.rst
 delete mode 100644 homer_nav_libs/CMakeLists.txt
 delete mode 100644 homer_nav_libs/README.md
 delete mode 100644 homer_nav_libs/package.xml
 delete mode 100644 homer_nav_libs/readme.pdf
 delete mode 100644 homer_nav_libs/src/Explorer/CMakeLists.txt
 delete mode 100644 homer_nav_libs/src/Explorer/Explorer.cpp
 delete mode 100644 homer_nav_libs/src/Explorer/Explorer.h
 delete mode 100644 homer_nav_libs/src/Explorer/GridMap.h
 delete mode 100644 homer_nav_libs/src/Math/Box2D.h
 delete mode 100644 homer_nav_libs/src/Math/CMakeLists.txt
 delete mode 100644 homer_nav_libs/src/Math/Line2D.cpp
 delete mode 100644 homer_nav_libs/src/Math/Line2D.h
 delete mode 100644 homer_nav_libs/src/Math/Math.cpp
 delete mode 100644 homer_nav_libs/src/Math/Math.h
 delete mode 100644 homer_nav_libs/src/Math/Pixel.h
 delete mode 100644 homer_nav_libs/src/Math/Point2D.cpp
 delete mode 100644 homer_nav_libs/src/Math/Point2D.h
 delete mode 100644 homer_nav_libs/src/Math/Pose.cpp
 delete mode 100644 homer_nav_libs/src/Math/Pose.h
 delete mode 100644 homer_nav_libs/src/Math/Transformation2D.cpp
 delete mode 100644 homer_nav_libs/src/Math/Transformation2D.h
 delete mode 100644 homer_nav_libs/src/Math/mat2.h
 delete mode 100644 homer_nav_libs/src/Math/mat2_inl.h
 delete mode 100644 homer_nav_libs/src/Math/vec2.h
 delete mode 100644 homer_nav_libs/src/SpeedControl/CMakeLists.txt
 delete mode 100644 homer_nav_libs/src/SpeedControl/SpeedControl.cpp
 delete mode 100644 homer_nav_libs/src/SpeedControl/SpeedControl.h
 delete mode 100644 homer_nav_libs/src/tools/tools.h
 delete mode 100644 homer_navigation/CHANGELOG.rst
 delete mode 100644 homer_navigation/CMakeLists.txt
 delete mode 100644 homer_navigation/README.md
 delete mode 100644 homer_navigation/config/homer_navigation.yaml
 delete mode 100644 homer_navigation/config/homer_navigation_followme.yaml
 delete mode 100644 homer_navigation/include/homer_navigation/homer_navigation_node.h
 delete mode 100644 homer_navigation/launch/homer_navigation.launch
 delete mode 100644 homer_navigation/launch/homer_navigation_followme.launch
 delete mode 100644 homer_navigation/launch/homer_navigation_ros.launch
 delete mode 100644 homer_navigation/package.xml
 delete mode 100644 homer_navigation/readme.pdf
 delete mode 100644 homer_navigation/src/homer_navigation_node.cpp
 rename {homer_map_manager/images => images}/rosgraph.png (100%)
 rename {homer_map_manager/images => images}/rosgraph.svg (100%)
 rename homer_map_manager/mainpage.dox => mainpage.dox (100%)
 rename homer_map_manager/manifest.xml => manifest.xml (100%)
 rename homer_map_manager/package.xml => package.xml (100%)
 rename homer_map_manager/readme.pdf => readme.pdf (100%)
 rename {homer_map_manager/src => src}/Managers/CMakeLists.txt (100%)
 rename {homer_map_manager/src => src}/Managers/MapManager.cpp (100%)
 rename {homer_map_manager/src => src}/Managers/MapManager.h (100%)
 rename {homer_map_manager/src => src}/Managers/MaskingManager.cpp (100%)
 rename {homer_map_manager/src => src}/Managers/MaskingManager.h (100%)
 rename {homer_map_manager/src => src}/Managers/PoiManager.cpp (100%)
 rename {homer_map_manager/src => src}/Managers/PoiManager.h (100%)
 rename {homer_map_manager/src => src}/Managers/RoiManager.cpp (100%)
 rename {homer_map_manager/src => src}/Managers/RoiManager.h (100%)
 rename {homer_map_manager/src => src}/MapIO/CMakeLists.txt (100%)
 rename {homer_map_manager/src => src}/MapIO/image_loader.cpp (100%)
 rename {homer_map_manager/src => src}/MapIO/image_loader.h (100%)
 rename {homer_map_manager/src => src}/MapIO/map_loader.cpp (100%)
 rename {homer_map_manager/src => src}/MapIO/map_loader.h (100%)
 rename {homer_map_manager/src => src}/MapIO/map_saver.cpp (100%)
 rename {homer_map_manager/src => src}/MapIO/map_saver.h (100%)
 rename {homer_map_manager/src => src}/Workers/PointOfInterest/CMakeLists.txt (100%)
 rename {homer_map_manager/src => src}/Workers/PointOfInterest/PointOfInterest.h (100%)
 rename {homer_map_manager/src => src}/main.cpp (100%)
 rename {homer_map_manager/src => src}/map_manager_node.cpp (100%)
 rename {homer_map_manager/src => src}/map_manager_node.h (100%)

diff --git a/homer_map_manager/CHANGELOG.rst b/CHANGELOG.rst
similarity index 100%
rename from homer_map_manager/CHANGELOG.rst
rename to CHANGELOG.rst
diff --git a/homer_map_manager/CMakeLists.txt b/CMakeLists.txt
similarity index 100%
rename from homer_map_manager/CMakeLists.txt
rename to CMakeLists.txt
diff --git a/README.md b/README.md
index bb50dcfe..39a46914 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,42 @@
-# mapping and navigation
-
-Here you can find the homer mapping and navigation packages
+# map_manager
+
+## Known Issues / Todo's 
+
+Aus bisher ungeklärten Gründen kann es in seltenen Fällen passieren, dass der map_manager die Verbindung zum roscore verliert. In diesem Fall muss er durch rosrun map_manager map_manager neugestartet werden.
+
+
+## Introduction 
+
+Der map_manager ist der Mittelpunkt der Kommunikation zwischen homer_mapping, homer_navigation, GUI und die Spiel-Nodes.
+Das Zusammenspiel dieser Nodes ist im Screenshot des rqt_graphs zu sehen.
+
+![rqt_graph](images/rosgraph.png)
+
+Er verwaltet die aktuell durch das mapping erstellte Karte sowie weitere Kartebenen. Aktuell sind das die SLAM-Karte, die aktuellen Laserdaten in einer weiteren Ebene und eine Masking-Ebene, in der mit Hilfe der GUI Hindernisse oder freie Flächen in die Karte gezeichnet werden können.
+Jedes mal, wenn eine SLAM-Karte von der mapping-Node geschickt wird, wird diese mit allen anderen Karteneben überschrieben (in der Reihenfolge SLAM, Masking, Laserdaten) und als eine zusammengefügte Karte versendet.
+Zudem verwaltet der map_manager alle erstellten Points Of Interest (POIs), die z.B. als Ziele für die Navigation verwendet werden.
+Die Node ist außerdem zuständig für das Speichern und Laden der Kartenebenen und der POIs. Dabei wird die SLAM-Ebene sowie die Masking-Ebene berücksichtigt.
+
+
+
+## Topics 
+
+
+#### Publisher 
+* `/map`: Die aktuelle Karte, die aus allen aktivierten Kartenebenen zusammengesetzt ist. Diese wird in der GUI angezeigt und für die Navigation verwendet.
+* `/map_manager/poi_list`: Verschickt einen Vektor mit allen aktuellen POIs. Dieser Publisher wird immer ausgelöst, sobald sich ein POI ändert oder ein neuer hinzugefügt wird.
+* `/map_manager/loaded_map`: Wenn eine Karte geladen wird, wird über dieses Topic die geladene SLAM-Ebene an die homer_mapping-Node verschickt.
+* `/map_manager/mask_slam`: Über die GUI kann die SLAM-Map verändert werden. Diese Modifizierungen werden über dieses Topic vom map_manager an das homer_mapping versendet.
+
+#### Subscriber
+
+* `/homer_mapping/slam_map (nav_msgs/OccupancyGrid)`: Hierüber wird die aktuelle SLAM-Map empfangen.
+* `/map_manager/save_map (map_messages/SaveMap)`: Hierüber wird der Befehl zum Speichern der Karte inklusive des Dateinamens empfangen.
+* `/map_manager/load_map (map_messages/SaveMap)`: Hiermit wird eine Karte geladen und alle bisherigen Kartenebenen durch die geladenen ersetzt.
+* `/map_manager/toggle_map_visibility (map_messages/MapLayers)`: Hierüber können einzelne Kartenebenen aktiviert beziehungsweise deaktiviert werden. Deaktivierte werden nicht mehr beim Zusammenfügen der Karte berücksichtigt und dementsprechend auch nicht in der GUI angezeigt sowie für die Navigation verwendet.
+* `/scan (nav_msgs/LaserScan)`: Der aktuelle Laserscan, der in die Laserscan-Ebene gezeichnet wird.
+* `/map_manager/add_POI (map_messages/PointOfInterest)`: Hierüber kann ein POI hinzugefügt werden.
+* `/map_manager/modify_POI (map_messages/ModifyPOI)`: Hierüber kann ein vorhandener POI verändert werden (Name, Position,...)
+* `/map_manager/delete_POI (map_messages/DeletePointOfInterest)`: Hierüber kann ein vorhander POI gelöscht werden.
+* `/map_manager/modify_map (map_messages/ModifyMap)`: Über dieses Topic werden die Koordinaten der Polygone verschickt, die über die GUI maskiert wurden. Außerdem wird die Kartenebene mitgeteilt, die verändet werden soll (SLAM oder Masking-Ebene).
+* `/map_manager/reset_maps (std_msgs/Empty)`: Hierüber werden alle Kartenebenen zurückgesetzt.
\ No newline at end of file
diff --git a/homer_map_manager/config/custom.xml b/config/custom.xml
similarity index 100%
rename from homer_map_manager/config/custom.xml
rename to config/custom.xml
diff --git a/homer_map_manager/config/default.xml b/config/default.xml
similarity index 100%
rename from homer_map_manager/config/default.xml
rename to config/default.xml
diff --git a/homer_map_manager/config/merged.xml b/config/merged.xml
similarity index 100%
rename from homer_map_manager/config/merged.xml
rename to config/merged.xml
diff --git a/homer_map_manager/README.md b/homer_map_manager/README.md
deleted file mode 100644
index 39a46914..00000000
--- a/homer_map_manager/README.md
+++ /dev/null
@@ -1,42 +0,0 @@
-# map_manager
-
-## Known Issues / Todo's 
-
-Aus bisher ungeklärten Gründen kann es in seltenen Fällen passieren, dass der map_manager die Verbindung zum roscore verliert. In diesem Fall muss er durch rosrun map_manager map_manager neugestartet werden.
-
-
-## Introduction 
-
-Der map_manager ist der Mittelpunkt der Kommunikation zwischen homer_mapping, homer_navigation, GUI und die Spiel-Nodes.
-Das Zusammenspiel dieser Nodes ist im Screenshot des rqt_graphs zu sehen.
-
-![rqt_graph](images/rosgraph.png)
-
-Er verwaltet die aktuell durch das mapping erstellte Karte sowie weitere Kartebenen. Aktuell sind das die SLAM-Karte, die aktuellen Laserdaten in einer weiteren Ebene und eine Masking-Ebene, in der mit Hilfe der GUI Hindernisse oder freie Flächen in die Karte gezeichnet werden können.
-Jedes mal, wenn eine SLAM-Karte von der mapping-Node geschickt wird, wird diese mit allen anderen Karteneben überschrieben (in der Reihenfolge SLAM, Masking, Laserdaten) und als eine zusammengefügte Karte versendet.
-Zudem verwaltet der map_manager alle erstellten Points Of Interest (POIs), die z.B. als Ziele für die Navigation verwendet werden.
-Die Node ist außerdem zuständig für das Speichern und Laden der Kartenebenen und der POIs. Dabei wird die SLAM-Ebene sowie die Masking-Ebene berücksichtigt.
-
-
-
-## Topics 
-
-
-#### Publisher 
-* `/map`: Die aktuelle Karte, die aus allen aktivierten Kartenebenen zusammengesetzt ist. Diese wird in der GUI angezeigt und für die Navigation verwendet.
-* `/map_manager/poi_list`: Verschickt einen Vektor mit allen aktuellen POIs. Dieser Publisher wird immer ausgelöst, sobald sich ein POI ändert oder ein neuer hinzugefügt wird.
-* `/map_manager/loaded_map`: Wenn eine Karte geladen wird, wird über dieses Topic die geladene SLAM-Ebene an die homer_mapping-Node verschickt.
-* `/map_manager/mask_slam`: Über die GUI kann die SLAM-Map verändert werden. Diese Modifizierungen werden über dieses Topic vom map_manager an das homer_mapping versendet.
-
-#### Subscriber
-
-* `/homer_mapping/slam_map (nav_msgs/OccupancyGrid)`: Hierüber wird die aktuelle SLAM-Map empfangen.
-* `/map_manager/save_map (map_messages/SaveMap)`: Hierüber wird der Befehl zum Speichern der Karte inklusive des Dateinamens empfangen.
-* `/map_manager/load_map (map_messages/SaveMap)`: Hiermit wird eine Karte geladen und alle bisherigen Kartenebenen durch die geladenen ersetzt.
-* `/map_manager/toggle_map_visibility (map_messages/MapLayers)`: Hierüber können einzelne Kartenebenen aktiviert beziehungsweise deaktiviert werden. Deaktivierte werden nicht mehr beim Zusammenfügen der Karte berücksichtigt und dementsprechend auch nicht in der GUI angezeigt sowie für die Navigation verwendet.
-* `/scan (nav_msgs/LaserScan)`: Der aktuelle Laserscan, der in die Laserscan-Ebene gezeichnet wird.
-* `/map_manager/add_POI (map_messages/PointOfInterest)`: Hierüber kann ein POI hinzugefügt werden.
-* `/map_manager/modify_POI (map_messages/ModifyPOI)`: Hierüber kann ein vorhandener POI verändert werden (Name, Position,...)
-* `/map_manager/delete_POI (map_messages/DeletePointOfInterest)`: Hierüber kann ein vorhander POI gelöscht werden.
-* `/map_manager/modify_map (map_messages/ModifyMap)`: Über dieses Topic werden die Koordinaten der Polygone verschickt, die über die GUI maskiert wurden. Außerdem wird die Kartenebene mitgeteilt, die verändet werden soll (SLAM oder Masking-Ebene).
-* `/map_manager/reset_maps (std_msgs/Empty)`: Hierüber werden alle Kartenebenen zurückgesetzt.
\ No newline at end of file
diff --git a/homer_mapnav_msgs/CHANGELOG.rst b/homer_mapnav_msgs/CHANGELOG.rst
deleted file mode 100644
index d190894e..00000000
--- a/homer_mapnav_msgs/CHANGELOG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package mapnav_msgs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.0.1 (2015-09-08)
-------------------
-* init
-* Contributors: Raphael Memmesheimer
diff --git a/homer_mapnav_msgs/CMakeLists.txt b/homer_mapnav_msgs/CMakeLists.txt
deleted file mode 100644
index c5edc11e..00000000
--- a/homer_mapnav_msgs/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-
-project(homer_mapnav_msgs)
-
-find_package(catkin REQUIRED 
-	COMPONENTS message_generation nav_msgs geometry_msgs)
-
-add_message_files(FILES
-	DeletePointOfInterest.msg
-	DoMapping.msg
-	MapLayers.msg
-	ModifyMap.msg
-	PointOfInterest.msg
-	PointsOfInterest.msg
-	RegionOfInterest.msg
-	RegionsOfInterest.msg
-	ModifyPOI.msg
-	TargetUnreachable.msg
-	StartNavigation.msg
-	StopNavigation.msg
-	NavigateToPOI.msg
-)
-
-add_service_files(FILES
-	GetPointsOfInterest.srv
-	GetRegionsOfInterest.srv
-	LoadMap.srv
-	SaveMap.srv
-)
-
-generate_messages(DEPENDENCIES geometry_msgs nav_msgs)
-
-catkin_package(CATKIN_DEPENDS message_runtime geometry_msgs nav_msgs)
diff --git a/homer_mapnav_msgs/README.md b/homer_mapnav_msgs/README.md
deleted file mode 100644
index 47aeac04..00000000
--- a/homer_mapnav_msgs/README.md
+++ /dev/null
@@ -1,244 +0,0 @@
-# map_messages
-
-
-## Introduction 
-
-Dieses Package enthält alle benutzerdefinierten Messages, die neben den in ROS enthaltenen Messages für das Mapping und die Navigation verwendet werden. Das Package enthält keine Node oder Librabries.
-
-## Messages 
-
-
-### PointOfInterest
-
-
-Die PointOfInterest-Message enthält alle Informationen, um einen POI zu erstellen, zu verschicken und zu speichern.
-
-~~~~~~ {.cpp}
-PointOfInterest.msg
-
-
-
-int32 DEFAULT=100
-int32 VICTIM=200
-int32 OBJECT=300
-int32 GRIPPABLE_OBJECT=400
-int32 PERSON=600
-int32 ROOMBA=700
-int32 HAZARD_MATERIAL=800
-int32 START_POSITION=900
-int32 START_ORIENTATION=1000
-
-int32 type
-string name
-string remarks
-
-geometry_msgs/Pose pose
-~~~~~~
-
-* `type` bezeichnet den Typ des POIs. Es kann eine der in dieser Message vorhandenen Konstanten verwendet werden. 
-* `name` bezeichnet den Namen des POIs. Dieser Name muss einzigartig sein, da die POIs über ihren Namen unterschieden werden.
-* `remarks`: Hier können Anmerkungen reingeschrieben werden. Diese werden in der GUI angezeigt.
-* `pose` bezeichnet die Position und Orientierung des POIS im /map-Frame.
-
-
-### ModifyPOI
-
-
-ModifyPOI ist dafür zuständig, einen vorhandenen POI zu verändern.
-
-~~~~~~ {.cpp}
-ModifyPOI.msg
-
-PointOfInterest poi
-string old_name
-~~~~~~
-
-* `poi` beinhaltet den POI, durch den der alte ersetzt werden soll.
-* `old_name` bezeichnet den Namen des POIs, der verändert werden soll.
-
-
-### TargetUnreachable
-
-
-
-TargetUnreachable wird von der Navigation versendet, sobald kein Pfad mehr zu einem Ziel geplant werden kann.
-
-
-~~~~~~ {.cpp}
-TargetUnreachable.msg
-
-int8 UNKNOWN=0
-int8 TILT_OCCURED=10
-int8 GRAVE_TILT_OCCURED=15
-int8 STALL_OCCURED=20
-int8 LASER_OBSTACLE=30
-
-int8 reason
-~~~~~~
-
-* `reason` kann einen von den in dieser Message definierten Konstanten annehmen und beschreibt den Grund des Fehlers.
-
-
-### SaveMap
-
-SaveMap wird versendet, wenn eine Karte gespeichert oder geladen werden soll und beinhaltet den Dateipfad zum Kartenordner.
-
-
-~~~~~~ {.cpp}
-SaveMap.msg
-
-string filename
-~~~~~~
-
-* `filename` bezeichnet den Dateipfad zum Kartenordner.
-
-
-### PointsOfInterest
-
-
-PointsOfInterest wird verwendet, um alle aktuellen POIs zu versenden.
-
-
-~~~~~~ {.cpp}
-PointsOfInterest.msg
-
-PointOfInterest[] pois
-~~~~~~
-
-* `pois` beinhaltet einen Vektor mit allen aktuellen POIs.
-
-
-### StartNavigation
-
-
-StartNavigation ist eine von zwei Methoden, um eine Navigation zu starten. Hier wird Der POI mitgegeben, zu dem der Roboter navigieren soll.
-
-
-~~~~~~ {.cpp}
-StartNavigation.msg
-
-geometry_msgs/Pose goal
-float32 distance_to_target
-bool skip_final_turn
-bool fast_planning
-~~~~~~
-
-* `goal` beinhaltet den Ziel-POI
-* `distance_to_target`: Hier kann angegeben werden, ab welcher Distanz zum Ziel die Navigation als erfolgreich abgeschlossen wird. 
-* `skip_final_turn`: Hier kann eingestellt werden, ob der Roboter sich am Ziel-POI in Richtund der POI-Orientierung ausrichten soll oder nicht.
-* `fast_planning`: Mit dieser Option kann ein experimentelles "Schnelles Planen" eingeschaltet werden. Es werden nur Pfade geplant, die sich in einer Boundingbox zwischen Roboter und Zielposition befinden.
-
-
-### MapLayers
-
-MapLayers definiert die vorhanden Kartenebenen als Konstanten und kann zudem verwendet werden, um einzelne Ebenen ein- oder auszuschalten.
-
-
-~~~~~~ {.cpp}
-MapLayers.msg
-
-int32 SLAM_LAYER=0
-int32 MASKING_LAYER=1
-int32 KINECT_LAYER=2
-int32 SICK_LAYER=3
-
-int32 layer
-bool state
-~~~~~~
-
-* `layer` enthält die Kartenebenen-ID und kann einen Wert dern in dieser Message definierten Konstanten annehmen.
-* `state` besagt, ob die ausgewählte Kartenebene aktiviert sein soll.
-
-
-
-
-### NavigateToPOI
-
-
-NavigateToPOI ist die zweite Art eine Navigation zu starten. Anstatt das gesamte POI-Objekt mitzugeben, wird nur der Name eines bereits im map_manger vorhandenen POIs mitgegeben, der daraufhin von der Navigation nachgeschlagen wird.
-
-~~~~~~ {.cpp}
-NavigateToPOI.msg
-
-string poi_name
-float32 distance_to_target
-bool skip_final_turn
-~~~~~~
-
-* `poi_name` beschreibt den Namen des POIS, zu dem navigiert werden soll.
-* `distance_to_target` siehe StartNavigation
-* `skip_final_turn` siehe StartNavigation
-
-
-### ModifyMap
-
-
-Mit dieser Message können Bereiche in einzelnen Kartenebenen verändert werden.
-
-
-~~~~~~ {.cpp}
-ModifyMap.msg
-
-int32 FREE = 0         
-int32 BLOCKED = 100    
-int32 OBSTACLE = 99     
-int32 NOT_MASKED = -1 
-
-geometry_msgs/Point[] region
-int32 maskAction
-int32 mapLayer 
-~~~~~~
-
-* `region` beschreibt die Eckpunkte des Polygons, das maskiert werden soll.
-* `maskAction` kann einen Wert der in dieser Message definierten Konstanten annehmen. OBSTACLE  wird in der Karte rot dargestellt. Mit NOT_MASKED können bereits maskierte Bereiche wieder gelöscht werden.
-* `mapLayer` enthält die ID der zu verändernden Kartenebene. Die IDs sind in der Message MapLayers definiert.
-
-
-
-### DeletePointOfInterest
-
-Löscht einen vorhandenen POI.
-
-
-~~~~~~ {.cpp}
-DeletePointOfInterest.msg
-
-string name
-~~~~~~
-
-* `name` beschreibt den Namen des zu löschenden POIs.
-
-
-### DoMapping
-
-
-
-Mit dieser Message kann das Mapping ein- oder ausgeschaltet werden.
-
-~~~~~~ {.cpp}
-DoMapping.msg
-
-bool state
-~~~~~~
-
-* `state` beinhaltet den Zustand des Mappings (true = an, false = off).
-
-
-## Services 
-
-### GetPointsOfInterest
-
-
-Über diesen Service kann die aktuelle Liste der POIs angefordert werden.
-
-
-~~~~~~ {.cpp}
-GetPointsOfInterest.srv
-
----
-PointsOfInterest poi_list
-~~~~~~
-
-* `poi_list` beinhaltet einen Vektor mit allen aktuellen POIs.
-
-
diff --git a/homer_mapnav_msgs/mainpage.dox b/homer_mapnav_msgs/mainpage.dox
deleted file mode 100644
index 4ef2ddd8..00000000
--- a/homer_mapnav_msgs/mainpage.dox
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
-\mainpage
-\htmlinclude manifest.html
-
-\b map_messages 
-
-<!-- 
-Provide an overview of your package.
--->
-
--->
-
-
-*/
diff --git a/homer_mapnav_msgs/manifest.xml b/homer_mapnav_msgs/manifest.xml
deleted file mode 100644
index 77dfdadc..00000000
--- a/homer_mapnav_msgs/manifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<package>
-  <description brief="map_messages">
-
-     map_messages
-
-  </description>
-  <author>Malte Knauf</author>
-  <license>BSD</license>
-  <review status="unreviewed" notes=""/>
-  <url>http://ros.org/wiki/map_messages</url>
-
-  <depend package="geometry_msgs"/>
-  <depend package="nav_msgs"/>
-</package>
-
-
diff --git a/homer_mapnav_msgs/msg/DeletePointOfInterest.msg b/homer_mapnav_msgs/msg/DeletePointOfInterest.msg
deleted file mode 100644
index 42f2bc1c..00000000
--- a/homer_mapnav_msgs/msg/DeletePointOfInterest.msg
+++ /dev/null
@@ -1 +0,0 @@
-string name
diff --git a/homer_mapnav_msgs/msg/DoMapping.msg b/homer_mapnav_msgs/msg/DoMapping.msg
deleted file mode 100644
index 119c8395..00000000
--- a/homer_mapnav_msgs/msg/DoMapping.msg
+++ /dev/null
@@ -1 +0,0 @@
-bool state
diff --git a/homer_mapnav_msgs/msg/MapLayers.msg b/homer_mapnav_msgs/msg/MapLayers.msg
deleted file mode 100644
index 78ccd311..00000000
--- a/homer_mapnav_msgs/msg/MapLayers.msg
+++ /dev/null
@@ -1,7 +0,0 @@
-int32 SLAM_LAYER=0
-int32 MASKING_LAYER=1
-int32 KINECT_LAYER=2
-int32 SICK_LAYER=3
-
-int32 layer    # map layer name
-bool state 	# visibility state (on/off)
diff --git a/homer_mapnav_msgs/msg/ModifyMap.msg b/homer_mapnav_msgs/msg/ModifyMap.msg
deleted file mode 100644
index b9a709d3..00000000
--- a/homer_mapnav_msgs/msg/ModifyMap.msg
+++ /dev/null
@@ -1,17 +0,0 @@
-int32 FREE = 0            # Area is free
-int32 BLOCKED = 100       # Area blocked by user (use UNBLOCK to .. )
-int32 OBSTACLE = 99       # Area is occupied by an obstacle (e.g. 3d scan) 
-int32 NOT_MASKED = -1     # Area is not masked: use slam map
-int32 HIGH_SENSITIV = -2  # Area is highly sensitiv for Obstacles
-int32 KINECT = 102 		  # Area is blocked by Kinect Obstacle
-
-
-int32 SET_FREE = 0      	  # Mark area free, area must not be BLOCKED
-int32 SET_BLOCKED = 100       # Block area
-int32 SET_OBSTACLE = 99   	  # Mark area as occupied by an obstacle (e.g. 3d scan)
-int32 SET_HIGH_SENSITIV = -2  # Mark Area as highly sensitiv for Obstacles
-
-
-geometry_msgs/Point[] region
-int32 maskAction
-int32 mapLayer #currently not used. modifications only take place in the masking map layer
diff --git a/homer_mapnav_msgs/msg/ModifyPOI.msg b/homer_mapnav_msgs/msg/ModifyPOI.msg
deleted file mode 100644
index 59786f4b..00000000
--- a/homer_mapnav_msgs/msg/ModifyPOI.msg
+++ /dev/null
@@ -1,2 +0,0 @@
-PointOfInterest poi
-string old_name #necessary if name of poi is changed
diff --git a/homer_mapnav_msgs/msg/NavigateToPOI.msg b/homer_mapnav_msgs/msg/NavigateToPOI.msg
deleted file mode 100644
index 342f1d1f..00000000
--- a/homer_mapnav_msgs/msg/NavigateToPOI.msg
+++ /dev/null
@@ -1,3 +0,0 @@
-string poi_name
-float32 distance_to_target
-bool skip_final_turn
diff --git a/homer_mapnav_msgs/msg/PointOfInterest.msg b/homer_mapnav_msgs/msg/PointOfInterest.msg
deleted file mode 100644
index af6654c8..00000000
--- a/homer_mapnav_msgs/msg/PointOfInterest.msg
+++ /dev/null
@@ -1,13 +0,0 @@
-#POI types
-int32 DEFAULT=100
-int32 OBJECT=300
-int32 GRIPPABLE_OBJECT=400
-int32 PERSON=600
-int32 START_POSITION=900
-int32 START_ORIENTATION=1000
-
-int32 type
-string name
-string remarks
-
-geometry_msgs/Pose pose
diff --git a/homer_mapnav_msgs/msg/PointsOfInterest.msg b/homer_mapnav_msgs/msg/PointsOfInterest.msg
deleted file mode 100644
index a2cfa937..00000000
--- a/homer_mapnav_msgs/msg/PointsOfInterest.msg
+++ /dev/null
@@ -1 +0,0 @@
-PointOfInterest[] pois
diff --git a/homer_mapnav_msgs/msg/RegionOfInterest.msg b/homer_mapnav_msgs/msg/RegionOfInterest.msg
deleted file mode 100644
index 6b4d3058..00000000
--- a/homer_mapnav_msgs/msg/RegionOfInterest.msg
+++ /dev/null
@@ -1,12 +0,0 @@
-#ROI types
-int32 DEFAULT=100
-int32 ROOM=200
-int32 AREA=300
-int32 FORBIDDEN_AREA=400
-
-int32 type
-string name
-string remarks
-
-int32 id
-geometry_msgs/Point[4] points
diff --git a/homer_mapnav_msgs/msg/RegionsOfInterest.msg b/homer_mapnav_msgs/msg/RegionsOfInterest.msg
deleted file mode 100644
index 73c0b1b0..00000000
--- a/homer_mapnav_msgs/msg/RegionsOfInterest.msg
+++ /dev/null
@@ -1 +0,0 @@
-RegionOfInterest[] rois
diff --git a/homer_mapnav_msgs/msg/StartNavigation.msg b/homer_mapnav_msgs/msg/StartNavigation.msg
deleted file mode 100644
index cff7a639..00000000
--- a/homer_mapnav_msgs/msg/StartNavigation.msg
+++ /dev/null
@@ -1,4 +0,0 @@
-geometry_msgs/Pose goal
-float32 distance_to_target #default should bei 0.01 [m]
-bool skip_final_turn
-bool fast_planning #path planning within bounding box containing robot pose and target
diff --git a/homer_mapnav_msgs/msg/StopNavigation.msg b/homer_mapnav_msgs/msg/StopNavigation.msg
deleted file mode 100644
index e69de29b..00000000
diff --git a/homer_mapnav_msgs/msg/TargetUnreachable.msg b/homer_mapnav_msgs/msg/TargetUnreachable.msg
deleted file mode 100644
index f69ddf67..00000000
--- a/homer_mapnav_msgs/msg/TargetUnreachable.msg
+++ /dev/null
@@ -1,9 +0,0 @@
-int8 UNKNOWN=0
-int8 TILT_OCCURED=10
-int8 GRAVE_TILT_OCCURED=15
-int8 STALL_OCCURED=20
-int8 LASER_OBSTACLE=30
-int8 LASER_TIMEOUT=35
-int8 NO_PATH_FOUND=40
-
-int8 reason
diff --git a/homer_mapnav_msgs/package.xml b/homer_mapnav_msgs/package.xml
deleted file mode 100644
index 19375055..00000000
--- a/homer_mapnav_msgs/package.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<package>
-  <name>homer_mapnav_msgs</name>
-  <version>1.0.1</version>
-  <description>
-
-     mapnav_msgs
-
-  </description>
-  <maintainer email="vseib@uni-koblenz.de">Viktor Seib</maintainer>
-  <author email="mknauf@uni-koblenz.de">Malte Knauf</author>
-  <license>GPLv3</license>
-  
-  <buildtool_depend>catkin</buildtool_depend>
-  <build_depend>message_generation</build_depend>
-  <build_depend>genmsg</build_depend>
-  <build_depend>geometry_msgs</build_depend>
-  <build_depend>nav_msgs</build_depend>
-  <run_depend>geometry_msgs</run_depend>
-  <run_depend>nav_msgs</run_depend>
-  <run_depend>message_runtime</run_depend>
-</package>
-
-
diff --git a/homer_mapnav_msgs/readme.pdf b/homer_mapnav_msgs/readme.pdf
deleted file mode 100644
index bb76e2631376e2bda2c6ca741778247f62e4e6a2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 121801
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
Cn|n+E

diff --git a/homer_mapnav_msgs/srv/GetPointsOfInterest.srv b/homer_mapnav_msgs/srv/GetPointsOfInterest.srv
deleted file mode 100644
index e7a3c1a7..00000000
--- a/homer_mapnav_msgs/srv/GetPointsOfInterest.srv
+++ /dev/null
@@ -1,2 +0,0 @@
----
-PointsOfInterest poi_list
diff --git a/homer_mapnav_msgs/srv/GetRegionsOfInterest.srv b/homer_mapnav_msgs/srv/GetRegionsOfInterest.srv
deleted file mode 100644
index f98be082..00000000
--- a/homer_mapnav_msgs/srv/GetRegionsOfInterest.srv
+++ /dev/null
@@ -1,2 +0,0 @@
----
-RegionsOfInterest roi_list
diff --git a/homer_mapnav_msgs/srv/LoadMap.srv b/homer_mapnav_msgs/srv/LoadMap.srv
deleted file mode 100644
index ef2e165e..00000000
--- a/homer_mapnav_msgs/srv/LoadMap.srv
+++ /dev/null
@@ -1,2 +0,0 @@
-std_msgs/String filename
----
diff --git a/homer_mapnav_msgs/srv/SaveMap.srv b/homer_mapnav_msgs/srv/SaveMap.srv
deleted file mode 100644
index 67831529..00000000
--- a/homer_mapnav_msgs/srv/SaveMap.srv
+++ /dev/null
@@ -1,2 +0,0 @@
-std_msgs/String folder
----
diff --git a/homer_mapping/CHANGELOG.rst b/homer_mapping/CHANGELOG.rst
deleted file mode 100644
index 17cb69b0..00000000
--- a/homer_mapping/CHANGELOG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package homer_mapping
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.0.1 (2015-09-08)
-------------------
-* init
-* Contributors: Raphael Memmesheimer
diff --git a/homer_mapping/CMakeLists.txt b/homer_mapping/CMakeLists.txt
deleted file mode 100644
index 489b7f6a..00000000
--- a/homer_mapping/CMakeLists.txt
+++ /dev/null
@@ -1,45 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(homer_mapping)
-
-find_package(
-	catkin REQUIRED COMPONENTS
-		roscpp
-		homer_mapnav_msgs
-		sensor_msgs
-		nav_msgs
-		homer_nav_libs
-		tf
-		roslib
-)
-
-set(CMAKE_BUILD_TYPE Release)
-
-
-include_directories(
-	${catkin_INCLUDE_DIRS}
-	$ENV{HOMER_DIR}
-)
-
-catkin_package(
-	CATKIN_DEPENDS
-		roscpp
-)
-
-add_subdirectory(${PROJECT_SOURCE_DIR}/src/OccupancyMap)
-add_subdirectory(${PROJECT_SOURCE_DIR}/src/ParticleFilter)
-
-add_executable(homer_mapping src/slam_node.cpp)
-
-target_link_libraries(
-	homer_mapping
-		${catkin_LIBRARIES}
-		MappingMath
-		ParticleFilter
-		OccupancyMap
-		Explorer
-)
-
-add_dependencies(
-	homer_mapping
-		${catkin_EXPORTED_TARGETS}
-)
diff --git a/homer_mapping/README.md b/homer_mapping/README.md
deleted file mode 100644
index e2781906..00000000
--- a/homer_mapping/README.md
+++ /dev/null
@@ -1,67 +0,0 @@
-# homer_mapping
-
-## Introduction 
-
-Das Package homer_mapping besteht aus einer gleichnamigen Node. Diese ist für die Lokalisierung und Kartierung des Roboters mit Hilfe der Odometrie des Roboters und eines Laserscanners zuständig.
-Das SLAM-Problem wird durch den Partikelfilter-Algorithmus gelöst.
-Die Node erwartet kontiniuierlich Odometrie-Werte und Laserdaten und verschickt in konstanten Abständen korrigierte Poseschätzungen über das Topic /pose und tf-Transformation /map -> /base_link.
-Zudem kann der Roboter sich auf einer vorher geladenen Karte lokalisieren, sowie eine aktuell erstellte Karte abgespeichert werden.
-Es besteht die Option, die Kartierung ein- oder auszuschalten. Beim Laden einer Karte wird die Kartierung automatisch ausgeschaltet.
-
-## Topics 
-
-
-
-
-
-
-#### Publisher 
-* `/pose (geometry_msgs/PoseStamped)`: Die aktuell ermittelte Pose relativ zu Karte (im Frame /map) des Roboters aus dem Partikelfilter.
-* `/homer_mapping/slam_map (nav_msgs/OccupancyGrid)`: Das aktuelle Karte des Roboters.
-
-
-
-#### Subscriber
-
-* `/odom (nav_msgs/Odometry)`: Die aktuellen Odometrie-Werte vom Roboter. Diese werden für die Partikelfilter benötigt.
-  `/scan (sensor_msgs/LaserScan)`: Die aktuelle Lasermessung, die vom Partikelfilter benötigt wird.
-* `/homer_mapping/userdef_pose (geometry_msgs/Pose)`: Mit diesem Topic kann die die aktuell vom Partikelfilter berechnete Pose auf eine benutzerdefinierte gesetzt werden. Der Partikelfilter arbeitet nun mit dieser weiter.
-* `/homer_mapping/do_mapping (map_messages/DoMapping)`: Mit diesem Topic kann die Kartierung ein- oder ausgeschaltet werden.
-* `/map_manager/reset_maps (std_msgs/Empty)`: Hiermit kann die aktuelle Karte zurückgesetzt werden.
-* `/map_manager/loaded_map (nav_msgs/OccupancyGrid)`: Mit diesem Topic kann die aktuelle Karte durch eine andere (geladene) Karte ausgetauscht werden.
-* `/map_manager/mask_slam (nav_msgs/OccupancyGrid)`: Im OccupancyGrid dieses Topics stehen Informationen, welche Teile der aktuellen Karte durch andere Werte (frei oder belegt) ersetzt werden sollen.
-
-## Launch Files 
-
-* `homer_mapping.launch`: Dieses Launchfile lädt die Parameterdatei `homer_mapping.yaml` und startet die Node homer_mapping sowie die Node map_manager im gleichnamigen Package.
-* `homer_mapping_rviz.launch`:`Dieses Launchfile hat die gleiche Funktionalität wie das obige, wobei es zusätzlich rviz startet.
-
-## Parameter 
-
-
-### homer_mapping.yaml
-
-
-
-* `/homer_mapping/size:` Size beschreibt die Größe einer Seite der Karte in Metern. Die Karte ist quadratisch
-* `/homer_mapping/resolution:` Resolution ist die Länge einer (quadratischen) Zelle der Karte in Metern
-* `/homer_mapping/backside_checking:` Wenn auf "true" gesetzt, wird verhindet, dass Vorder- und Rückseite einer dickeren Wand auf die gematcht werden.
-* `/homer_mapping/obstacle_borders:` Wenn auf "true" gesetzt, wird um eingetragene Hindernisse ein kleiner Rand unbekanntes Gebiet gelassen.
-* `/homer_mapping/measure_sampling_step:` Minimale Distanz in Metern, die zwischen zwei aufeinanderfolgenden Messpunkten im Laserscan vorhanden sein muss, um sie für die Poseberechnung zu verwenden
-* `/homer_mapping/laser_scanner/free_reading_distance:` Minimale Distanz in Metern, die als hindernissfrei angenommen wird, wenn der aktuelle Messpunkt fehlerhaft ist
-* `/particlefilter/error_values/rotation_error_rotating:` Rotationsfehler in Prozent, der beim Rotieren des Roboters auftritt
-* `/particlefilter/error_values/rotation_error_translating:` Rotationsfehler in Grad, der beim Fahren von einem Meter auftritt
-* `/particlefilter/error_values/translation_error_translating:` Translationsfehler in Prozent, der beim Geradeausfahren auftritt
-* `/particlefilter/error_values/translation_error_rotating:` Translationsfehler in Metern, der beim Rotieren von einem Grad auftritt
-* `/particlefilter/error_values/move_jitter_while_turning:` Streuung der neu berechneten Pose in Meter pro Grad Drehung
-* `/particlefilter/hyper_slamfilter/particlefilter_num:` Anzahl der Partikelfilter im Hyperpartikelfilter (ist standardmäßig auf 1 gesetzt)
-* `/particlefilter/particle_num:` Anzahl der Partikel in jedem Partikelfilter
-* `/particlefilter/max_rotation_per_second:` Maximale Rotation in Radiant pro Sekunde, die der Roboter sich drehen darf, ohne dass das Mapping ausgesetzt wird
-* `/particlefilter/wait_time:` Minimale Zeit, die zwischen zwei Mapping-Schritten verstrichen sein muss
-* `/particlefilter/update_min_move_angle:` Minimale Rotation in Grad, die durchgeführt werden muss, damit ein Partikelfilterschritt ausgeführt wird...
-* `/particlefilter/update_min_move_dist:` ...oder minimale Distanz in Metern, die der Roboter geradeaus fährt...
-* `/particlefilter/max_update_interval:` ...oder minimale Wartezeit, in der der Roboter still steht.
-* `/selflocalization/scatter_var_xy:` Streuung der Partikel in x/y-Richtung in Metern beim Setzen einer benutzerdefinierten Pose
-* `/selflocalization/scatter_var_theta:` Streuung der Ausrichtung der Partikel in Radiant beim Setzen einer benutzerdefinierten Pose
-
-
diff --git a/homer_mapping/config/homer_mapping.yaml b/homer_mapping/config/homer_mapping.yaml
deleted file mode 100644
index 1f4abdc6..00000000
--- a/homer_mapping/config/homer_mapping.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-/homer_mapping/size: 35 #size of one edge of the map in m. map is quadratic
-/homer_mapping/resolution: 0.05 #meter per cell
-
-#map config values
-/homer_mapping/backside_checking: false #Enable checking to avoid matching front- and backside of obstacles, e.g. walls. Useful when creating high resolution maps
-/homer_mapping/obstacle_borders: true #Leaves a small border around obstacles unchanged when inserting a laser scan. Improves stability of generated map
-/homer_mapping/measure_sampling_step: 0.15 #Minimum distance in m between two samples for probability calculation
-
-/homer_mapping/laser_scanner/free_reading_distance: 0.8 # Minimum distance in m to be classified as free in case of errorneous measurement
-
-/particlefilter/error_values/rotation_error_rotating: 5.0 #percent
-/particlefilter/error_values/rotation_error_translating: 0.0 #degrees per meter
-/particlefilter/error_values/translation_error_translating: 5.0 #percent
-/particlefilter/error_values/translation_error_rotating: 0.0 #m per degree
-/particlefilter/error_values/move_jitter_while_turning: 0.05 #30.0 #m per degree
-
-
-/particlefilter/hyper_slamfilter/particlefilter_num: 1
-
-/particlefilter/particle_num: 1000
-/particlefilter/max_rotation_per_second: 1.0 #maximal rotation in radiants if mapping is performed. if rotation is bigger, mapping is interrupted
-/particlefilter/wait_time: 0.08 #minimum time to wait between two slam steps in seconds
-
-#the map is only updated when the robot has turned a minimal angle, has moved a minimal distance or a maximal time has passed
-/particlefilter/update_min_move_angle: 5 # degrees
-/particlefilter/update_min_move_dist: 0.1 #m
-/particlefilter/max_update_interval: 2 #seconds
-
-/selflocalization/scatter_var_xy: 0.05 #m
-/selflocalization/scatter_var_theta: 0.2 #radiants
diff --git a/homer_mapping/config/homer_mapping_followme.yaml b/homer_mapping/config/homer_mapping_followme.yaml
deleted file mode 100644
index 13792fb8..00000000
--- a/homer_mapping/config/homer_mapping_followme.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-/homer_mapping/size: 35 #size of one edge of the map in m. map is quadratic
-/homer_mapping/resolution: 0.1 #meter per cell
-
-/particlefilter/error_values/rotation_error_rotating: 0.05 #percent
-/particlefilter/error_values/rotation_error_translating: 5.0 #degrees per meter
-/particlefilter/error_values/translation_error_translating: 8.0 #percent
-/particlefilter/error_values/translation_error_rotating: 0.005 #m per degree
-/particlefilter/error_values/move_jitter_while_turning: 0.05 #30.0 #m per degree
diff --git a/homer_mapping/launch/homer_mapping.launch b/homer_mapping/launch/homer_mapping.launch
deleted file mode 100644
index e9e5c5d8..00000000
--- a/homer_mapping/launch/homer_mapping.launch
+++ /dev/null
@@ -1,5 +0,0 @@
-<launch>
- <rosparam command="load" file="$(find homer_mapping)/config/homer_mapping.yaml"/>
- <node name="homer_mapping" pkg="homer_mapping" type="homer_mapping" output="screen"/>
- <node name="map_manager" pkg="map_manager" type="map_manager" output="screen"/>
-</launch>
diff --git a/homer_mapping/launch/homer_mapping_followme.launch b/homer_mapping/launch/homer_mapping_followme.launch
deleted file mode 100644
index bdc7208d..00000000
--- a/homer_mapping/launch/homer_mapping_followme.launch
+++ /dev/null
@@ -1,5 +0,0 @@
-<launch>
- <rosparam command="load" file="$(find homer_mapping)/config/homer_mapping_followme.yaml"/>
- <node name="homer_mapping" pkg="homer_mapping" type="homer_mapping" output="screen"/>
- <node name="map_manager" pkg="map_manager" type="map_manager" output="screen"/>
-</launch>
diff --git a/homer_mapping/launch/homer_mapping_ros.launch b/homer_mapping/launch/homer_mapping_ros.launch
deleted file mode 100644
index e9e5c5d8..00000000
--- a/homer_mapping/launch/homer_mapping_ros.launch
+++ /dev/null
@@ -1,5 +0,0 @@
-<launch>
- <rosparam command="load" file="$(find homer_mapping)/config/homer_mapping.yaml"/>
- <node name="homer_mapping" pkg="homer_mapping" type="homer_mapping" output="screen"/>
- <node name="map_manager" pkg="map_manager" type="map_manager" output="screen"/>
-</launch>
diff --git a/homer_mapping/launch/homer_mapping_rviz.launch b/homer_mapping/launch/homer_mapping_rviz.launch
deleted file mode 100644
index 8ac72e94..00000000
--- a/homer_mapping/launch/homer_mapping_rviz.launch
+++ /dev/null
@@ -1,6 +0,0 @@
-<launch>
- <param name="use_sim_time" type="bool" value="true"/>
- <node name="tf_static_publisher" pkg="homer_mapping" type="static_publisher"/>
- <node name="homer_mapping" pkg="homer_mapping" type="homer_mapping" output="screen"/>
- <node name="rviz" pkg="rviz" type="rviz"/>
-</launch>
diff --git a/homer_mapping/mainpage.dox b/homer_mapping/mainpage.dox
deleted file mode 100644
index 054b63cf..00000000
--- a/homer_mapping/mainpage.dox
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
-\mainpage
-\htmlinclude manifest.html
-
-\b homer_mapping is ... 
-
-<!-- 
-Provide an overview of your package.
--->
-
-
-\section codeapi Code API
-
-<!--
-Provide links to specific auto-generated API documentation within your
-package that is of particular interest to a reader. Doxygen will
-document pretty much every part of your code, so do your best here to
-point the reader to the actual API.
-
-If your codebase is fairly large or has different sets of APIs, you
-should use the doxygen 'group' tag to keep these APIs together. For
-example, the roscpp documentation has 'libros' group.
--->
-
-
-*/
diff --git a/homer_mapping/manifest.xml b/homer_mapping/manifest.xml
deleted file mode 100644
index 2c9977b6..00000000
--- a/homer_mapping/manifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<package>
-  <description brief="homer_mapping">
-
-     homer_mapping
-
-  </description>
-  <author>Malte</author>
-  <license>BSD</license>
-  <review status="unreviewed" notes=""/>
-  <url>http://ros.org/wiki/homer_mapping</url>
-  <depend package="std_msgs"/>
-  <depend package="roscpp"/>
-  <depend package="sensor_msgs"/>
-  <depend package="nav_msgs"/>
-  <depend package="tf"/>
-  <depend package="roslib"/>  
-
-  <depend package="robbie_architecture"/>
-  <depend package="BaseLib"/>
-  <depend package="map_messages"/>
-</package>
-
-
diff --git a/homer_mapping/package.xml b/homer_mapping/package.xml
deleted file mode 100644
index 4bd58358..00000000
--- a/homer_mapping/package.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<package>
-  <name>homer_mapping</name>
-  <version>1.0.1</version>
-  <description>
-
-     homer_mapping
-
-  </description>
-  <maintainer email="vseib@uni-koblenz.de">Viktor Seib</maintainer>
-  <author email="mknauf@uni-koblenz.de">Malte Knauf</author>
-
-  <license>GPLv3</license>
-  <buildtool_depend>catkin</buildtool_depend>
-
-  <build_depend>roscpp</build_depend>
-  <build_depend>sensor_msgs</build_depend>
-  <build_depend>nav_msgs</build_depend>
-  <build_depend>tf</build_depend>
-  <build_depend>roslib</build_depend>
-  <build_depend>homer_nav_libs</build_depend>
-
-  <build_depend>homer_mapnav_msgs</build_depend>
- 
-
-  <run_depend>std_msgs</run_depend>
-  <run_depend>roscpp</run_depend>
-  <run_depend>sensor_msgs</run_depend>
-  <run_depend>nav_msgs</run_depend>
-  <run_depend>tf</run_depend>
-  <run_depend>roslib</run_depend>  
-  <run_depend>homer_nav_libs</run_depend>
-
-  <run_depend>homer_mapnav_msgs</run_depend>
-</package>
diff --git a/homer_mapping/readme.pdf b/homer_mapping/readme.pdf
deleted file mode 100644
index 07f93c8ff0f8b7c478d0e93269eb5df0febdd4ad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 113506
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
CwC<b$

diff --git a/homer_mapping/src/CMakeLists.txt b/homer_mapping/src/CMakeLists.txt
deleted file mode 100644
index e5e17710..00000000
--- a/homer_mapping/src/CMakeLists.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-add_subdirectory(Workers)
-add_subdirectory(Modules)
diff --git a/homer_mapping/src/OccupancyMap/CMakeLists.txt b/homer_mapping/src/OccupancyMap/CMakeLists.txt
deleted file mode 100644
index 9aaff582..00000000
--- a/homer_mapping/src/OccupancyMap/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-# QT related
-find_package(Qt4 COMPONENTS QtCore QtGui REQUIRED)
-find_package(tf REQUIRED)
-include(${QT_USE_FILE})
-add_definitions(${QT_DEFINITIONS})
-
-set(
-	OccupancyMap_SRC
-		OccupancyMap.cpp
-)
-
-include_directories(
-	${QT_INCLUDE_DIR}
-)
-
-add_library(
-	OccupancyMap
-		${OccupancyMap_SRC}
-)
-
-target_link_libraries(
-	OccupancyMap
-		${QT_LIBRARIES}
-		${tf_LIBRARIES}
-)
-
-add_dependencies(
-	OccupancyMap
-		or_msgs_gencpp
-		homer_mapnav_msgs_gencpp
-)
diff --git a/homer_mapping/src/OccupancyMap/Math/Box2D.h b/homer_mapping/src/OccupancyMap/Math/Box2D.h
deleted file mode 100644
index 5979b68a..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Box2D.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- *  Box2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: Box2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef Box2D_H
-#define Box2D_H
-
-#include "Point2D.h"
-#include <vector>
-
-/**
- * @class  Box2D
- * @author David Gossow (RX)
- * @brief  Represents a box given by the upper-left and lower-right corner
- */
-template<class T=float>
-class Box2D
-{
-
-  public:
-
-    /** @brief Creates a box given by top-left (minX,minY) and lower-right (maxX,maxY) coordinates */
-    Box2D(T minX=0, T minY=0, T maxX=0, T maxY=0);
-
-    /** @brief The destructor */
-    ~Box2D() {};
-
-    inline void setMinX(T value) { m_MinX=value; }
-    inline void setMaxX(T value) { m_MaxX=value; }
-    inline void setMinY(T value) { m_MinY=value; }
-    inline void setMaxY(T value) { m_MaxY=value; }
-
-    inline T minX() const { return m_MinX; }
-    inline T maxX() const { return m_MaxX; }
-    inline T minY() const { return m_MinY; }
-    inline T maxY() const { return m_MaxY; }
-
-    inline T width() const { return m_MaxX-m_MinX; }
-    inline T height() const { return m_MaxY-m_MinY; }
-
-    std::vector< Point2D > vertices();
-
-    /** @brief Clip the box to fit into clipArea */
-    void clip( Box2D<T> clipArea );
-
-    /** @return true if the given point is inside the box */
-    bool contains( T x, T y );
-
-    /** @brief enlarge the box by 'size' units in all directions */
-    void expand( T size );
-
-    /** @brief shrink the box by 'size' units in all directions */
-    void shrink( T size );
-
-    /** @brief expand the box so that it contains the given point */
-    void enclose( Point2D point );
-    void enclose( T x, T y );
-
-    template<class OtherT>
-    void enclose( Box2D<OtherT> box );
-
-    Point2D centerPoint()
-    {
-        Point2D center;
-        center.setX(m_MinX + ( (m_MaxX - m_MinX) / 2 ) );
-        center.setY(m_MinY + ( (m_MaxY - m_MinY) / 2 ) );
-        return center;
-    }
-
-    /** @brief area covered by the box */
-    T area();
-
-    Box2D<T>& operator/= ( T div ) { m_MinX/=div; m_MinY/=div; m_MaxX/=div; m_MaxY/=div; return *this; }
-    Box2D<T>& operator*= ( T div ) { m_MinX*=div; m_MinY*=div; m_MaxX*=div; m_MaxY*=div; return *this; }
-
-  private:
-
-    T m_MinX;
-    T m_MaxX;
-    T m_MinY;
-    T m_MaxY;
-
-};
-
-template<class T>
-Box2D<T>::Box2D(T minX, T minY, T maxX, T maxY)
-{
-  m_MinX=minX;
-  m_MinY=minY;
-  m_MaxX=maxX;
-  m_MaxY=maxY;
-}
-
-template<class T>
-void Box2D<T>::clip( Box2D<T> clipArea )
-{
-  if (m_MinX < clipArea.minX()) { m_MinX=clipArea.minX(); }
-  if (m_MinY < clipArea.minY()) { m_MinY=clipArea.minY(); }
-  if (m_MaxX > clipArea.maxX()) { m_MaxX=clipArea.maxX(); }
-  if (m_MaxY > clipArea.maxY()) { m_MaxY=clipArea.maxY(); }
-}
-
-template<class T>
-bool Box2D<T>::contains( T x, T y )
-{
-  return ( (x>=m_MinX) && (x<=m_MaxX) && (y>=m_MinY) && (y<=m_MaxY) );
-}
-
-template<class T>
-    void Box2D<T>::expand( T size )
-{
-  m_MinX-=size;
-  m_MaxX+=size;
-  m_MinY-=size;
-  m_MaxY+=size;
-}
-
-template<class T>
-void Box2D<T>::shrink( T size )
-{
-  m_MinX+=size;
-  m_MaxX-=size;
-  m_MinY+=size;
-  m_MaxY-=size;
-}
-
-template<class T>
-T Box2D<T>::area()
-{
-  T width = m_MaxX - m_MinX;
-  T height = m_MaxY - m_MinY;
-
-  T capacity = width * height;
-
-  return (T) capacity;
-}
-
-template<class T>
-void Box2D<T>::enclose( Point2D point )
-{
-  if ( m_MinX > point.x() ) { m_MinX=point.x(); }
-  if ( m_MinY > point.y() ) { m_MinY=point.y(); }
-  if ( m_MaxX < point.x() ) { m_MaxX=point.x(); }
-  if ( m_MaxY < point.y() ) { m_MaxY=point.y(); }
-}
-
-template<class T>
-void Box2D<T>::enclose( T x, T y )
-{
-  if ( m_MinX > x ) { m_MinX=x; }
-  if ( m_MinY > y ) { m_MinY=y; }
-  if ( m_MaxX < x ) { m_MaxX=x; }
-  if ( m_MaxY < y ) { m_MaxY=y; }
-}
-
-template<class T>
-template<class OtherT>
-void Box2D<T>::enclose( Box2D<OtherT> box )
-{
-  enclose( box.minX(), box.minY() );
-  enclose( box.maxX(), box.maxY() );
-}
-
-
-template<class T>
-std::vector< Point2D > Box2D<T>::vertices()
-{
-  std::vector<Point2D> myVertices(5);
-  myVertices[0]=Point2D( m_MinX-0.5, m_MinY-0.5 );
-  myVertices[1]=Point2D( m_MinX-0.5, m_MaxY+0.5 );
-  myVertices[2]=Point2D( m_MaxX+0.5, m_MaxY+0.5 );
-  myVertices[3]=Point2D( m_MaxX+0.5, m_MinY-0.5 );
-  myVertices[4]=myVertices[0];
-  return myVertices;
-}
-
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/CMakeLists.txt b/homer_mapping/src/OccupancyMap/Math/CMakeLists.txt
deleted file mode 100644
index ff84de22..00000000
--- a/homer_mapping/src/OccupancyMap/Math/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-set(Math_SRC
-  Line2D.cpp
-  Polygon2D.cpp
-  misc.cpp
-  Transformation2D.cpp
-  mat3.cpp
-  Circle2D.cpp
-  Pose.cpp
-  Obb2D.cpp
-  Matrix.cpp
-  Math.cpp
-  Point2D.cpp
-  Vector3D.cpp
-  Homography.cpp
-)
-
-add_library(Math ${Math_SRC})
diff --git a/homer_mapping/src/OccupancyMap/Math/Circle2D.cpp b/homer_mapping/src/OccupancyMap/Math/Circle2D.cpp
deleted file mode 100644
index edaadf42..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Circle2D.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- *  Circle2D.cpp
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *******************************************************************************/
-
-#include "Circle2D.h"
-#include "vec2.h"
-
-#include <math.h>
-
-#define THIS Circle2D
-
-using namespace std;
-
-THIS::THIS() {
-  m_Radius=0.0;
-}
-
-THIS::THIS(double x, double y, double radius) {
-  m_Center=Point2D(x,y);
-  m_Radius=radius;
-}
-
-THIS::THIS( Point2D center, double radius) {
-  m_Center=center;
-  m_Radius=radius;
-}
-
-THIS::~THIS() {
-}
-
-double THIS::x() const{
-  return m_Center.x();
-}
-
-double THIS::y() const{
-  return m_Center.y();
-}
-
-double THIS::radius() const
-{
-  return m_Radius;
-}
-
-Point2D THIS::center() const
-{
-  return m_Center;
-}
-
-void THIS::setX(double x) {
-  m_Center.setX(x);
-}
-
-void THIS::setY(double y) {
-  m_Center.setY(y);
-}
-
-void THIS::setCenter( Point2D center )
-{
-  m_Center=center;
-}
-
-void THIS::setRadius( double radius )
-{
-  m_Radius=radius;
-}
-
-
-vector<Point2D> THIS::vertices( int steps )
-{
-  vector<Point2D> myVertices;
-  myVertices.reserve( steps+1 );
-  for( float alpha=0.0; alpha<M_PI*2; alpha+=M_PI*2/float(steps) ) {
-    myVertices.push_back( m_Center + CVec2( sin(alpha)*m_Radius, cos(alpha)*m_Radius ) );
-  }
-  myVertices.push_back( m_Center + CVec2( sin(M_PI*2)*m_Radius, cos(M_PI*2)*m_Radius ) );
-  return myVertices;
-}
-
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Circle2D.h b/homer_mapping/src/OccupancyMap/Math/Circle2D.h
deleted file mode 100644
index 68f280e5..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Circle2D.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- *  Circle2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id :$
- *******************************************************************************/
-
-#ifndef Circle2D_H
-#define Circle2D_H
-
-#include "Point2D.h"
-#include <vector>
-
-/**
- * @class Circle2D
- * @author David Gossow
- */
-class Circle2D {
-
-  public:
-
-    Circle2D();
-
-    /** Creates a new 2D Circle given by center and radius */
-    Circle2D( double x, double y, double radius );
-    Circle2D( Point2D center, double radius );
-
-    /**
-     * Destructor, does nothing.
-     */
-    ~Circle2D();
-
-    double x() const;
-    double y() const;
-    double radius() const;
-    Point2D center() const;
-
-    void setX(double x);
-    void setY(double y);
-    void setCenter( Point2D center );
-    void setRadius( double radius );
-
-    std::vector<Point2D> vertices( int steps=40 );
-
-  protected:
-
-    Point2D m_Center;
-    double m_Radius;
-};
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Homography.cpp b/homer_mapping/src/OccupancyMap/Math/Homography.cpp
deleted file mode 100644
index 8a2a719e..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Homography.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- *  Homography.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *******************************************************************************/
-
-#include "Homography.h"
-
-#include <math.h>
-#include <string.h>
-#include <sstream>
-
-#define THIS Homography
-
-THIS::THIS ( double homMat[9] )
-{
-  memcpy( m_HomMat, homMat, 9*sizeof(double) );
-}
-
-THIS::THIS ( const THIS& other )
-{
-  memcpy( m_HomMat, other.m_HomMat, 9*sizeof(double) );
-}
-
-THIS& THIS::operator=( const Homography& other )
-{
-  memcpy( m_HomMat, other.m_HomMat, 9*sizeof(double) );
-  return *this;
-}
-
-Point2D THIS::transform ( Point2D point2 )
-{
-  if ( !point2.isValid() )
-  {
-    return point2;
-  }
-  else
-  {
-    double x = point2.x();
-    double y = point2.y();
-    double Z = 1. / ( m_HomMat[6] * x + m_HomMat[7] * y + m_HomMat[8] );
-    double X = ( m_HomMat[0] * x + m_HomMat[1] * y + m_HomMat[2] ) * Z;
-    double Y = ( m_HomMat[3] * x + m_HomMat[4] * y + m_HomMat[5] ) * Z;
-    return Point2D( X, Y );
-  }
-}
-
-void THIS::transform ( std::vector<Point2D>& points2, std::vector<Point2D> &projPoints )
-{
-  projPoints.reserve( points2.size() );
-
-  // Translate src_corners to dst_corners using homography
-  for ( unsigned i = 0; i < points2.size(); i++ )
-  {
-    if ( !points2[i].isValid() )
-    {
-      projPoints.push_back( points2[i] );
-    }
-    else
-    {
-      double x = points2[i].x();
-      double y = points2[i].y();
-      double Z = 1. / ( m_HomMat[6] * x + m_HomMat[7] * y + m_HomMat[8] );
-      double X = ( m_HomMat[0] * x + m_HomMat[1] * y + m_HomMat[2] ) * Z;
-      double Y = ( m_HomMat[3] * x + m_HomMat[4] * y + m_HomMat[5] ) * Z;
-      projPoints.push_back( Point2D( X, Y ) );
-    }
-  }
-}
-
-bool THIS::checkValidity ( std::vector<Point2D>& points2 )
-{
-  // Translate src_corners to dst_corners using homography
-  for ( unsigned i = 0; i < points2.size(); i++ )
-  {
-    if ( !points2[i].isValid() )
-    {
-      continue;
-    }
-    else
-    {
-      double x = points2[i].x();
-      double y = points2[i].y();
-      double Z = 1. / ( m_HomMat[6] * x + m_HomMat[7] * y + m_HomMat[8] );
-      if ( Z < 0 )
-      {
-        return false;
-      }
-    }
-  }
-  return true;
-}
-
-std::string THIS::toString()
-{
-  std::ostringstream s;
-  for ( int j=0; j< 3; j++ )
-  {
-    for ( int i=0; i< 3; i++ )
-    {
-      s << m_HomMat[i+3*j] << " ";
-    }
-    s << std::endl;
-  }
-  return s.str();
-}
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Homography.h b/homer_mapping/src/OccupancyMap/Math/Homography.h
deleted file mode 100644
index c8829e92..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Homography.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- *  CvHomography.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *******************************************************************************/
-
-#ifndef Homography_H
-#define Homography_H
-
-#include "Point2D.h"
-#include <vector>
-
-/**
- * @class  Homography
- * @brief  Represents a homography
- * @author David Gossow
- */
-class Homography
-{
-  public:
-
-    Homography( ) {}
-
-    Homography( double homMat[9] );
-
-    Homography( const Homography& other );
-
-    Homography& operator=( const Homography& other );
-
-    /** Transform point2 using the homography */
-    Point2D transform ( Point2D point2 );
-
-    /** Transform keyPoints2 using the homography and store them in projPoints
-     * @return if one of the resulting points has z<0, that means it would lie behind the camera, return false
-     */
-    void transform ( std::vector<Point2D>& points2, std::vector<Point2D> &projPoints );
-
-    /// @return true if all the given points lie in front of the camera (z>0)
-    bool checkValidity ( std::vector<Point2D>& points2 );
-
-    std::string toString();
-
- // private: // FIXME made public to create ROS message
-
-    double m_HomMat[9];
-};
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Line2D.cpp b/homer_mapping/src/OccupancyMap/Math/Line2D.cpp
deleted file mode 100644
index f5807c31..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Line2D.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- *  Line2D.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Information on Code Review state:
- *  Author: SM; DevelTest: Date; Reviewer: Initials; Review: Date; State: NOK
- *
- *  Additional information:
- *  $Id: Line2D.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <iostream>
-#include <sstream>
-
-#include "Line2D.h"
-#include "vec2.h"
-
-#define THIS Line2D
-
-float THIS::gradient() const
-{
-  float gradient = 10000000.0;
-  if ( m_Vec[0] != 0.0 )
-  {
-    gradient = m_Vec[1]/m_Vec[0];
-  }
-  return gradient;
-}
-
-std::vector< Point2D > THIS::vertices ( unsigned substeps )
-{
-  unsigned steps = substeps+2;
-  std::vector<Point2D> myVertices ( steps );
-  for ( unsigned i=0; i<steps; i++ )
-  {
-    float t= float ( i ) / float ( steps-1 );
-    myVertices[i] = m_Start + t*m_Vec;
-  }
-  return myVertices;
-}
-
-Point2D THIS::getClosestPoint ( Point2D point ) const
-{
-  float t = ( point-m_Start ) * m_Vec;
-  t /= m_Vec * m_Vec;
-  if ( t > 1.0 )
-  {
-    t = 1.0;
-  }
-  else if ( t < 0.0 )
-  {
-    t = 0.0;
-  }
-  Point2D pointOnLine = m_Start + ( t * m_Vec );
-  return pointOnLine;
-}
-
-Point2D THIS::getIntersectionPoint ( Line2D line ) const
-{
-  Point2D intersecPoint;
-  double det1 = m_Vec.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * m_Vec.y();
-  // lines are not parallel
-  if ( det1 != 0 )
-  {
-    CVec2 startToStart = line.start() -m_Start;
-    // calculate intersection
-    double lambda = ( startToStart.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * startToStart.y() ) / det1;
-    intersecPoint = m_Start + lambda* m_Vec;
-  }
-
-  return intersecPoint;
-}
-
-float THIS::getIntersectionPointParameter ( Line2D line ) const
-{
-  double lambda = 0.0;
-  double det1 = m_Vec.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * m_Vec.y();
-  // lines are not parallel
-  if ( det1 != 0 )
-  {
-    CVec2 startToStart = line.start() -m_Start;
-    // calculate intersection
-    lambda = ( startToStart.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * startToStart.y() ) / det1;
-  }
-
-  return lambda;
-}
-
-std::string THIS::toString() const
-{
-  std::ostringstream str;
-//   str << "Startpoint: " << m_Start.x() << " " << m_Start.y() << " Endpoint: " << end().x() << " " << end().y() <<
-//   " Vector: " << m_Vec.x() << " " << m_Vec.y() << " ";
-  str << m_Start.x() << " " << m_Start.y() << std::endl << end().x() << " " << end().y() << std::endl;
-  return str.str();
-}
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Line2D.h b/homer_mapping/src/OccupancyMap/Math/Line2D.h
deleted file mode 100644
index e8c210bb..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Line2D.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- *  Line2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Information on Code Review state:
- *  Author: SM; DevelTest: Date; Reviewer: Initials; Review: Date; State: NOK
- *
- *  Additional information:
- *  $Id: Line2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef LINE2D_H
-#define LINE2D_H
-
-#include "vec2.h"
-#include "mat2.h"
-#include "Point2D.h"
-#include <vector>
-
-/**
- * @class Line2D
- *
- * @author Susanne Maur
- *
- */
-class Line2D
-{
-
-  public:
-
-    /**
-     * Creates a new line.
-     * @param start Start point of the line.
-     * @param end End point of the line.
-     */
-    inline Line2D ( Point2D start, Point2D end )
-    {
-      m_Start = start;
-      m_Vec = end-m_Start;
-    }
-
-
-    /**
-      * Creates a new line.
-      * @param start Start point of the line.
-      * @param vec The vector from start to end point of the line.
-      */
-    inline Line2D ( Point2D start,  CVec2 vec )
-    {
-      m_Start = start;
-      m_Vec = vec;
-    }
-
-    /**
-     * Destructor does nothing.
-     */
-    inline ~Line2D() {}
-
-    /**
-     * Sets the start point of the line to a new value.
-     * @param start Start point of the line.
-     */
-    inline void setStart ( const Point2D start )
-    {
-      Point2D end = m_Start + m_Vec;
-      m_Start = start;
-      m_Vec = end-m_Start;
-    }
-
-    /**
-     * Sets the end point of the line to a new value.
-     * @param end End point of the line.
-     */
-
-    inline void setEnd ( const Point2D end )
-    {
-      m_Vec = end - m_Start;
-    }
-
-    /**
-     * Returns the start point of the line.
-     * @return Start point of the line.
-     */
-    inline Point2D start() const
-    {
-      return m_Start;
-    }
-
-    /**
-     * Returns the end point of the line.
-     * @return End point of the line.
-     */
-    inline Point2D end() const
-    {
-      return m_Start + m_Vec;
-    }
-
-    /**
-     * Returns a vector from the start to the end of the line.
-     * @return Vector to the end point of the line.
-     */
-    inline CVec2 vec() const
-    {
-      return m_Vec;
-    }
-
-    inline bool operator== ( const Line2D& line ) const
-    {
-      return ( m_Start == line.start() && end() == line.end() );
-    }
-
-    /**
-     * Returns the gradient of the line.
-     * @return Gradient of the line.
-     */
-    float gradient() const ;
-
-    /**
-    * Returns the length of the line.
-    * @return Length of the line.
-     */
-    inline float length() const {
-      return m_Vec.magnitude();
-    }
-
-    /**
-     * Returns the minimum  euclidean distance of the given point to the line.
-     * @param point Point of which the distance to the line will be calculated.
-     * @return Distance of point to line.
-     */
-    inline float distance ( Point2D point ) const
-    {
-      Point2D pointOnLine = getRootPoint ( point );
-      return ( point - pointOnLine ).magnitude();
-    }
-
-    /**
-     * Rotates the line round the origin.
-     * @param angle The angle of rotation in radiants.
-     */
-    inline void rotate ( float angle )
-    {
-      CMat2 rotMat = CMat2 ( angle );
-      m_Start = rotMat * m_Start;
-      m_Vec = rotMat * m_Vec;
-    }
-
-    /**
-     * Returns the point of the line with the minimal distance to a given point.
-     * This algorithm may return a point which lies on the extension of the line and not on itself.
-     * See also: getClosestPoint.
-     * @param point Point to which the distance is calculated.
-     * @return Root point of the line.
-     */
-    inline Point2D getRootPoint ( Point2D point ) const
-    {
-      float t = ( point-m_Start ) * m_Vec;
-      t /= m_Vec * m_Vec;
-      Point2D pointOnLine = m_Start + ( t * m_Vec );
-      return pointOnLine;
-    }
-
-    /**
-     * Returns the normal of the line.
-     * @return Normal of the line.
-     */
-    inline CVec2 getNormal() const {
-      return m_Vec.getNormal()/m_Vec.magnitude();
-    }
-
-    /**
-    * Returns the point of the line with the minimal distance to a given point.
-    * This algorithm returns always a point which lies on the line.
-    * Therefor it is not always the root point.
-    * See also: getRootPoint.
-    * @param point Point to which the distance is calculated.
-    * @return Root point of the line.
-     */
-    Point2D getClosestPoint ( Point2D point ) const;
-
-    /**
-    * Returns the intersection point of this line with a second line.
-    * The intersection point is element of this line.
-    * @param line The line with which the intersection is calculated.
-    * @return Intersection point.
-     */
-    Point2D getIntersectionPoint ( Line2D line ) const;
-
-    /**
-     * Returns the parameter t which identifies the intersection point of this line with a second line.
-     * The intersection point is element of this line.
-     * @param line The line with which the intersection is calculated.
-     * @return Parameter t which identifies the intersection point on the line.
-     */
-    float getIntersectionPointParameter ( Line2D line ) const;
-
-    /**
-     * @return Vertices, e.g. for use in a VectorObject
-     * @param  substeps number of linear interpolation steps between start and end
-     */
-    std::vector< Point2D > vertices ( unsigned substeps=0 );
-
-    /**
-     * @overwrite
-     */
-    std::string toString() const;
-
-  private:
-
-    /**
-     * Start point of the line.
-     */
-    Point2D m_Start;
-
-    /**
-     * Vector from the start to the end of the line.
-     */
-    CVec2 m_Vec;
-};
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Math.cpp b/homer_mapping/src/OccupancyMap/Math/Math.cpp
deleted file mode 100644
index 3f31c5bf..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Math.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- *  Math.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $ 
- *******************************************************************************/
-
-#include <limits.h>
-#include "Math.h"
-#include <math.h>
-
-#include "vec2.h"
-
-#define THIS Math
-
-THIS::THIS()
-{
-}
-
-THIS::~THIS()
-{
-}
-
-float THIS::meanAngle( const std::vector<float>& angles )
-{
-  //calculate vectors from angles
-  CVec2 vectorSum(0,0);
-  for ( unsigned i=0; i<angles.size(); i++ )
-  {
-    vectorSum = vectorSum + CVec2( cos( angles[i] ), sin ( angles[i] ) );
-  }
-  //return vectorSum.getAngle( CVec2(1,0) );
-  if ( vectorSum.magnitude() == 0 ) { return 0; }
-  return atan2( vectorSum.y(), vectorSum.x() );
-}
-
-
-float THIS::meanAngleWeighted( const std::vector< WeightedValue >& weightedAngles )
-{
-  //calculate vectors from angles
-  CVec2 vectorSum(0,0);
-  for ( unsigned i=0; i<weightedAngles.size(); i++ )
-  {
-    vectorSum = vectorSum + weightedAngles[i].weight * CVec2( cos( weightedAngles[i].value ), sin ( weightedAngles[i].value ) );
-  }
-  //return vectorSum.getAngle( CVec2(1,0) );
-  if ( vectorSum.magnitude() == 0 ) { return 0; }
-  return atan2( vectorSum.y(), vectorSum.x() );
-}
-
-
-float THIS::angleVariance( float meanAngle, const std::vector<float>& angles )
-{
-  float quadSum=0;
-  for( unsigned i=0; i < angles.size(); i++ )
-  {
-    float turnAngle=minTurnAngle( angles[i], meanAngle );
-    quadSum += turnAngle*turnAngle;
-  }
-  return quadSum / float ( angles.size() );
-}
-
-
-float THIS::minTurnAngle( float angle1, float angle2 )
-{
-/*  CVec2 vector1( cos( angle1 ), sin ( angle1 ) );
-  CVec2 vector2( cos( angle2 ), sin ( angle2 ) );
-  return vector1.getAngle( vector2 );
-  */
-  angle1 *= 180.0/M_PI;
-  angle2 *= 180.0/M_PI;
-  //if(angle1 < 0) angle1 += M_PI * 2;
-  //if(angle2 < 0) angle2 += M_PI * 2;
-  int diff= angle2 - angle1;
-  diff = (diff + 180) % 360 - 180;
-
-  //float sign=1;
-  //if ( diff < 0 ) { sign=-1; }
-  //minimal turn angle:
-  //if the absolute difference is above 180°, calculate the difference in other direction
-  //if ( fabs(diff) > M_PI ) {
-  //  diff = 2*M_PI - fabs(diff);
-  //  diff *= sign;
-  //}
-
-  float ret = static_cast<double>(diff) * M_PI/180.0;
-  return ret;
-}
-
-Point2D THIS::center( std::vector<Point2D>& points )
-{
-  double numPoints = double( points.size() );
-  double sumX=0, sumY=0;
-  for( unsigned i=0; i < points.size(); i++ )
-  {
-    sumX += points[i].x();
-    sumY += points[i].y();
-  }
-  return Point2D( sumX / numPoints, sumY / numPoints );
-}
-
-
-double THIS::randomGauss(float variance)
-{
-  if (variance < 0) {
-    variance = -variance;
-  }
-  double x1, x2, w, y1;
-  do {
-    x1 = 2.0 * random01() - 1.0;
-    x2 = 2.0 * random01() - 1.0;
-    w = x1 * x1 + x2 * x2;
-  } while ( w >= 1.0 );
-
-  w = sqrt((-2.0 * log(w)) / w);
-  y1 = x1 * w;
-  // now y1 is uniformly distributed
-  return sqrt(variance) * y1;
-}
-
-double THIS::random01(unsigned long init)
-{
-  static unsigned long n;
-  if (init > 0) {
-    n = init;
-  }
-  n = 1664525 * n + 1013904223;
-  // create double from unsigned long
-  return (double)(n/2) / (double)LONG_MAX;
-}
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Math.h b/homer_mapping/src/OccupancyMap/Math/Math.h
deleted file mode 100644
index bf00135a..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Math.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- *  Math.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $
- *******************************************************************************/
-
-#ifndef Math_H
-#define Math_H
-
-#include <vector>
-#include "Point2D.h"
-
-/**
- * @class  Math
- * @brief  Generic math and statistics functions
- * @author David Gossow (RX)
- */
-class Math
-{
-  public:
-
-    struct WeightedValue
-    {
-      float value;
-      float weight;
-    };
-
-    static const double Pi = 3.14159265358979323846;
-
-    /** @return mean value */
-    template<class ContainerT>
-    static double mean ( const ContainerT& values );
-
-    /** @return variance of given values */
-    template<class ContainerT>
-    static double variance ( const ContainerT& values );
-
-    /** @return mean angle of given values
-     *  @note   there are always two possible choices for the mean angle. This function returns the one with the smallest deviation
-     *  @note   Works for angles in [-Pi..Pi], negative angles are treated
-     */
-    static float meanAngle ( const std::vector<float>& angles );
-
-    static float meanAngleWeighted ( const std::vector< WeightedValue >& weightedAngles );
-
-    /** @return variance for given mean */
-    static float angleVariance ( float meanAngle, const std::vector<float>& angles );
-
-    /** @return minimal angle needed to turn from angle 1 to angle 2 [-Pi..Pi] */
-    static float minTurnAngle ( float angle1, float angle2 );
-
-    static Point2D center ( std::vector<Point2D>& points );
-
-    static float deg2Rad ( float deg ) { return deg / 180.0*Pi; }
-
-    static float rad2Deg ( float rad ) { return rad / Pi*180.0; }
-
-    static double randomGauss ( float variance = 1.0 );
-
-    static double random01 ( unsigned long init = 0 );
-
-    /** @return ratio between one dimension seen under old viewangle and dimension under new viewangle*/
-    static double angleToPercent ( double newAngle, double oldAngle ) { return tan ( ( Pi / 180.0 ) * newAngle / 2 ) / tan ( ( Pi / 180.0 ) * oldAngle / 2 ); };
-
-    /** @return angle under which the ratio between dimension seen under old viewangle and new viewangle equals percent*/
-    static double percentToAngle ( double percent, double angle ) { return 2* atan ( tan ( ( Pi / 180.0 ) * angle / 2 ) * percent ) * ( 180 / Pi ); };
-
-    /** @return horizontal view angle corresponding to diagonal view angle and aspect ratio (e.g. 4.0/3.0)*/
-    static double horizontalViewAngle ( double diagonalAngle, double aspectRatio ) { return verticalViewAngle ( diagonalAngle, 1.0 / aspectRatio ); };
-
-    /** @return vertical view angle corresponding to diagonal view angle and aspect ratio (e.g. 4.0/3.0)*/
-    static double verticalViewAngle ( double diagonalAngle, double aspectRatio )
-    {
-      return percentToAngle ( 1.0 / sqrt ( pow ( aspectRatio, 2 ) + 1.0 ), diagonalAngle );
-    };
-
-    template<class ValueT>
-    static inline ValueT min ( ValueT a, ValueT b ) { return a < b ? a : b; }
-
-    template<class ValueT>
-    static inline ValueT max ( ValueT a, ValueT b ) { return a > b ? a : b; }
-
-  private:
-
-    /** @brief The constructor */
-    Math();
-
-    /** @brief The destructor */
-    ~Math();
-
-};
-
-template<class ContainerT>
-double Math::mean ( const ContainerT& values )
-{
-  typename ContainerT::const_iterator it;
-  it = values.begin();
-  double sum = 0;
-  while ( it != values.end() )
-  {
-    sum += *it;
-    it++;
-  }
-  return sum / double ( values.size() );
-}
-
-
-template<class ContainerT>
-double Math::variance ( const ContainerT& values )
-{
-  double mean = mean ( values );
-  typename ContainerT::const_iterator it;
-  it = values.begin();
-  double sum = 0;
-  while ( it != values.end() )
-  {
-    double diff = *it - mean;
-    sum += diff * diff;
-    it++;
-  }
-  return sum / double ( values.size() );
-}
-
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Matrix.cpp b/homer_mapping/src/OccupancyMap/Math/Matrix.cpp
deleted file mode 100644
index abe38365..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Matrix.cpp
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- *  Matrix.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $ 
- *******************************************************************************/
-
-#include "Matrix.h"
-
-#define THIS Matrix
-
-THIS THIS::transpose() {
-    Matrix newMatrix(m_Columns, m_Lines);
-    for (unsigned i = 0; i < m_Lines*m_Columns; i++) {
-        newMatrix.setValue(i/m_Columns, i%m_Lines, m_Values[i/m_Lines * i%m_Columns]);
-    }
-    return newMatrix;
-}
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Matrix.h b/homer_mapping/src/OccupancyMap/Math/Matrix.h
deleted file mode 100644
index 89f5f39a..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Matrix.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*******************************************************************************
- *  Matrix.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $
- *******************************************************************************/
-
-#ifndef MATRIX_H
-#define MATRIX_H
-
-#include "mat2.h"
-#include "mat3.h"
-
-/**
- * @class  Matrix
- * @brief  This class describes a Matrix
- * @author Michael Dahl
- */
-class Matrix
-{
-  public:
-
-    /** @brief The constructor */
-    Matrix(unsigned lines, unsigned columns){
-        m_Lines = lines;
-        m_Columns = columns;
-        m_Values = new double[lines*columns];
-        for (unsigned i = 0; i< lines*columns; i++) {
-            m_Values[i] = 0;
-        }
-    }
-
-    Matrix(const CMat2 matrix2) {
-        m_Lines = 2;
-        m_Columns = 2;
-        m_Values = new double[4];
-        for(unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            m_Values[i] = matrix2.valueAt(i);
-        }
-    }
-
-    Matrix(const CMat3 matrix3) {
-        m_Lines = 3;
-        m_Columns = 3;
-        m_Values = new double[9];
-        for(unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            m_Values[i] = matrix3.valueAt(i);
-        }
-    }
-
-    /** @brief The destructor */
-    ~Matrix() {
-        delete[] m_Values;
-    }
-
-    inline double getValue(int line, int column) const{
-        return m_Values[line*m_Columns  + column];
-    }
-
-    inline void setValue(int line, int column, double value) {
-        m_Values[line*m_Columns + column] = value;
-    }
-
-    Matrix transpose();
-
-    Matrix operator *(double scalar){
-        Matrix returnMatrix(m_Lines, m_Columns);
-        for (unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            returnMatrix.setValue(i/m_Lines, i%m_Lines, this->getValue(i/m_Lines, i%m_Lines) * scalar);
-        }
-        return returnMatrix;
-    }
-
-    Matrix operator /(double scalar){
-        Matrix returnMatrix(m_Lines, m_Columns);
-        for (unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            returnMatrix.setValue(i/m_Lines, i%m_Lines, this->getValue(i/m_Lines, i%m_Lines) / scalar);
-        }
-        return returnMatrix;
-    }
-
-    Matrix operator *(const Matrix rhs){
-        Matrix returnMatrix(m_Lines, m_Columns);
-        for (unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            returnMatrix.setValue(i/m_Lines, i%m_Lines, this->getValue(i/m_Lines, i%m_Lines) * rhs.getValue(i%m_Lines, i/m_Lines));
-        }
-        return returnMatrix;
-    }
-
-    Matrix operator +(const Matrix rhs){
-        Matrix returnMatrix(m_Lines, m_Columns);
-        for (unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            returnMatrix.setValue(i/m_Lines, i%m_Lines, this->getValue(i/m_Lines, i%m_Lines) + rhs.getValue(i/m_Lines, i%m_Lines));
-        }
-        return returnMatrix;
-    }
-
-    Matrix operator -(const Matrix rhs){
-        Matrix returnMatrix(m_Lines, m_Columns);
-        for (unsigned i = 0; i < m_Lines * m_Columns; i++) {
-            returnMatrix.setValue(i/m_Lines, i%m_Lines, this->getValue(i/m_Lines, i%m_Lines) - rhs.getValue(i/m_Lines, i%m_Lines));
-        }
-        return returnMatrix;
-    }
-
-  private:
-
-  unsigned int m_Lines;
-  unsigned int m_Columns;
-  double* m_Values;
-};
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Obb2D.cpp b/homer_mapping/src/OccupancyMap/Math/Obb2D.cpp
deleted file mode 100755
index 9d4a2ae8..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Obb2D.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-#include <stdlib.h>
-
-
-#include "Obb2D.h"
-#include <iostream>
-
-//----------------------------------------------------------------------------------------------------------
-OBB2D::OBB2D()
-{
-}
-//----------------------------------------------------------------------------------------------------------
-OBB2D::~OBB2D()
-{
-}
-//----------------------------------------------------------------------------------------------------------
-std::pair<CVec2,CVec2> OBB2D::computeAABB() const
-{
-	CVec2 mins(999999,999999);
-	CVec2 maxs(-999999,-999999);
-	for (int i=0;i<4;i++)
-	{
-		if (mPoints[i][0]<mins[0]) mins[0]=mPoints[i][0];
-		if (mPoints[i][1]<mins[1]) mins[1]=mPoints[i][1];
-		if (mPoints[i][0]>maxs[0]) maxs[0]=mPoints[i][0];
-		if (mPoints[i][1]>maxs[1]) maxs[1]=mPoints[i][1];
-	}
-	return std::make_pair(mins,maxs);
-}
-//----------------------------------------------------------------------------------------------------------
-// Polygon an Kante (clipStart, clipEnd) clippen, Originalpunkte werden ueberschrieben
-int clipEdge(const CVec2* points, int numPoints, const CVec2& clipStart, const CVec2& clipEnd, CVec2* dest)
-{
-	int result=0;
-
-	// Normale zeigt nach aussen
-	CVec2 n(clipEnd[1] - clipStart[1],
-		       clipStart[0] - clipEnd[0]);
-
-	//n=n*(-1);
-
-	float d0=clipStart*n;
-
-	int i=numPoints-1;
-	for (int iNext=0;iNext<numPoints;iNext++)
-	{
-		const CVec2& a=points[i];
-		const CVec2& b=points[iNext];
-
-		float adotn=a*n;
-		float bdotn=b*n;
-		float da=adotn-d0;
-		float db=bdotn-d0;
-
-		if (da<=0)
-		{
-			if (db<=0)
-			{
-				// beide innerhalb
-				//outputPoints.push_back(b);
-				dest[result++]=b;
-			}
-			else
-			{
-				// a drinnen, b draussen => schnittpunkt
-				float t=-da/(bdotn-adotn);
-				//outputPoints.push_back(a+t*(b-a));
-				dest[result++]=a+t*(b-a);
-			}
-		}
-		else
-		{
-			if (db<=0)
-			{
-				// a draussen, b drinnen => schnittpunkt
-				float t=-da/(bdotn-adotn);
-				//outputPoints.push_back(a+t*(b-a));
-				//outputPoints.push_back(b);
-				dest[result++]=a+t*(b-a);
-				dest[result++]=b;
-			}
-			else
-			{
-				// beide ausserhalb
-			}
-		}
-
-		i=iNext;
-	}
-
-	return result;
-}
-//----------------------------------------------------------------------------------------------------------
-float OBB2D::computeClippedArea(const OBB2D& clipPoly)
-{
-	CVec2* tmp1=(CVec2*)alloca(20*sizeof(CVec2));
-	CVec2* tmp2=(CVec2*)alloca(20*sizeof(CVec2));
-
-	int res=0;
-
-	res=clipEdge(mPoints,4,clipPoly[3],clipPoly[0],tmp1);
-	res=clipEdge(tmp1,res,clipPoly[0],clipPoly[1],tmp2);
-	res=clipEdge(tmp2,res,clipPoly[1],clipPoly[2],tmp1);
-	res=clipEdge(tmp1,res,clipPoly[2],clipPoly[3],tmp2);
-
-	/*
-	static int maxres=0;
-	if (res>=maxres)
-	{
-		std::cout << "res: " << res << std::endl;
-		maxres=res;
-	}*/
-
-
-	float area=0;
-	for (int i=0;i<res;i++)
-	{
-		area+=(tmp2[i][1]+tmp2[(i+1)%res][1])*(tmp2[i][0]-tmp2[(i+1)%res][0]);
-	}
-	area=0.5f*fabs(area);
-	return area;
-}
-//----------------------------------------------------------------------------------------------------------
-/*float Polygon2D::computeArea() const
-{
-#if 0
-	float area=0;
-	CVec2 last=mPoints[1];
-	for (int i=2;i<mPoints.size();i++)
-	{
-		CVec2 a=last-mPoints[0];
-		CVec2 b=mPoints[i]-mPoints[0];
-		area+=0.5f*fabs(a.x*b.y-a.y*b[0]);
-
-		last=mPoints[i];
-	}
-	return area;
-#else
-	float area2=0;
-	for (int i=0;i<mPoints.size();i++)
-	{
-		area2+=(mPoints[i][1]+mPoints[(i+1)%mPoints.size()][1])*(mPoints[i][0]-mPoints[(i+1)%mPoints.size()][0]);//mPoints[i].x*mPoints[i+1].y-mPoints[i+1].x*mPoints[i][1];
-	}
-	area2=0.5f*fabs(area2);
-	//std::cout << "area: " << area << " " << area2 << std::endl;
-	return area2;
-#endif
-}*/
-//----------------------------------------------------------------------------------------------------------
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Obb2D.h b/homer_mapping/src/OccupancyMap/Math/Obb2D.h
deleted file mode 100755
index ec7313ab..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Obb2D.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef _OBB2D_H
-#define _OBB_H
-
-#include "vec2.h"
-#include <vector>
-
-/**
- * Obolete. Used by Robbie 9 for line clipping.
- * Bad documentation. For questions ask F. Neuhaus.
- */
-
-class OBB2D 
-{
-  public:
-
-	OBB2D();
-	~OBB2D();
-	
-	CVec2& operator[](int i) { return mPoints[i]; };
-	const CVec2& operator[](int i) const { return mPoints[i]; };
-	
-	float computeClippedArea(const OBB2D& clipPoly);
-	
-	std::pair<CVec2,CVec2> computeAABB() const;
-
-
-  private:
-
-	CVec2 mPoints[4];
-};
-
-#endif
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Pixel.h b/homer_mapping/src/OccupancyMap/Math/Pixel.h
deleted file mode 100644
index 026fd3a6..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Pixel.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- *  Pixel.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Pixel.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef PIXEL_H
-#define PIXEL_H
-
-#include "Point2D.h"
-#include <vector>
-
-/** @class Pixel
-  * @brief Stores discrete pixel coordinates
-  * @author Stephan Wirth, David Gossow (RX)
-  */
-class Pixel {
-
-  public:
-
-    inline Pixel( int x = 0, int y = 0) { m_X = x; m_Y = y; };
-    inline ~Pixel() {};
-
-    inline int x() const { return m_X; }
-    inline int y() const { return m_Y; }
-
-    inline void setX( int x ) { m_X = x; }
-    inline void setY( int y ) { m_Y = y; }
-
-    inline bool operator ==( Pixel& rhs ) { return ( m_X == rhs.m_X ) && ( m_Y == rhs.m_Y ); }
-    inline bool operator !=( Pixel& rhs ) { return ( m_X != rhs.m_X ) || ( m_Y != rhs.m_Y ); }
-    inline Pixel operator *( float rhs ) { return Pixel( m_X * rhs, m_Y * rhs ); }
-    inline Pixel operator /( float rhs ) { return Pixel( m_X / rhs, m_Y / rhs ); }
-
-    inline Point2D toPoint2D() { return Point2D( m_X, m_Y ); }
-    
-    inline std::vector<Point2D> vertices()
-    {
-      std::vector<Point2D> result(5);
-      result[0]=Point2D( m_X-0.5, m_Y-0.5 );
-      result[1]=Point2D( m_X+0.5, m_Y-0.5 );
-      result[2]=Point2D( m_X+0.5, m_Y+0.5 );
-      result[3]=Point2D( m_X-0.5, m_Y+0.5 );
-      result[4]=result[0];
-      return result;
-    }
-
-  private:
-
-    int m_X;
-    int m_Y;
-
-};
-
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Point2D.cpp b/homer_mapping/src/OccupancyMap/Math/Point2D.cpp
deleted file mode 100644
index c8ae09b7..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Point2D.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- *  Point2D.cpp
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $ 
- *******************************************************************************/
-
-#include "Point2D.h"
-
-#define THIS Point2D 
-
-float THIS::getPolarAngle () const
-{
-  float angle = atan ( m_Y /m_X );
-  if ( m_X < 0 )
-  {
-    angle = - ( M_PI - angle );
-  }
-  while ( angle >= M_PI )
-  {
-    angle -= 2*M_PI;
-  }
-  while ( angle < -M_PI )
-  {
-    angle += 2*M_PI;
-  }
-  return angle;
-}
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Point2D.h b/homer_mapping/src/OccupancyMap/Math/Point2D.h
deleted file mode 100644
index 94810ef9..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Point2D.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/*******************************************************************************
- *  Point2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Point2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <iostream>
-#include <sstream>
-
-#include "vec2.h"
-#include <float.h>
-
-#ifndef POINT2D_H
-#define POINT2D_H
-
-/**
- * @class Point2D
- *
- * @author Susanne Maur
- *
- */
-class Point2D
-{
-
-  public:
-
-    /**
-     * Creates a new point in 2D with x- and y-coordinat set to zero.
-     */
-    inline Point2D()
-    {
-      m_X = 0.0;
-      m_Y = 0.0;
-    }
-
-    /**
-    * Creates a new point in 2D.
-    * @param x x-coordinate of the point.
-    * @param y y-coordinate of the point.
-     */
-    inline Point2D ( double x, double y )
-    {
-      m_X = x;
-      m_Y = y;
-    }
-
-
-
-    /**
-     * Copy construcor
-     */
-    inline Point2D (const Point2D& p){
-      m_X = p.x();
-      m_Y = p.y();
-    }
-    
-    /**
-    * Creates a new point in 2D.
-    * @param v Vector form origin to the point.
-     */
-    inline Point2D ( const CVec2& v )
-    {
-      m_X = v[0];
-      m_Y = v[1];
-    }
-
-    /**
-    * Destructor, does nothing.
-     */
-    inline ~Point2D()
-    {
-    }
-
-    /**
-    * Returns the x-coordinate of the point.
-    * @return the x-coordinate of the point.
-     */
-    inline double x() const
-    {
-      return m_X;
-    }
-
-    /**
-    * Returns the y-coordinate of the point.
-    * @return the y-coordinate of the point.
-     */
-    inline double y() const
-    {
-      return m_Y;
-    }
-
-    /**
-    * Sets the x- and y-coordinate of the point to new values.
-    * @param x the new value of the x coordinate.
-    * @param y the new value of the x coordinate.
-     */
-    inline void set ( double x, double y )
-    {
-      m_X = x;
-      m_Y = y;
-    }
-
-    /**
-    * Sets the x-coordinate of the point to a new value.
-    * @param x the new value of the x coordinate.
-     */
-    inline void setX ( double x )
-    {
-      m_X = x;
-    }
-
-    /**
-    * Sets the y-coordinate of the point to a new value.
-    * @param y the new value of the x coordinate.
-     */
-    inline void setY ( double y )
-    {
-      m_Y = y;
-    }
-
-    /**
-     * Overloaded operators.
-     */
-
-    inline Point2D& operator= ( const Point2D& p) {
-      m_X = p.x();
-      m_Y = p.y(); 
-      return *this;
-    }
-
-    inline Point2D operator+ ( const CVec2& v ) const
-    {
-      return Point2D ( m_X + v[0], m_Y + v[1] );
-    }
-
-    inline Point2D operator+ ( const Point2D& p ) const
-    {
-      return Point2D ( m_X + p.x(), m_Y + p.y() );
-    }
-
-    inline CVec2 operator- ( const Point2D& p ) const
-    {
-      return CVec2 ( m_X - p.x(), m_Y - p.y() );
-    }
-
-    inline Point2D operator- ( const CVec2& v ) const
-    {
-      return Point2D ( m_X - v[0], m_Y - v[1] );
-    }
-
-    inline Point2D operator* ( double scalar ) const
-    {
-      return Point2D ( m_X * scalar, m_Y * scalar );
-    }
-
-    inline Point2D operator/ ( double scalar ) const
-    {
-      return Point2D ( m_X / scalar, m_Y / scalar );
-    }
-
-    inline Point2D& operator+= ( const CVec2& v )
-    {
-      m_X += v[0];
-      m_Y += v[1];
-      return ( *this );
-    }
-
-    inline Point2D& operator-= ( const CVec2& v )
-    {
-      m_X -= v[0];
-      m_Y -= v[1];
-      return ( *this );
-    }
-
-    inline Point2D& operator*= ( double scalar )
-    {
-      m_X *= scalar;
-      m_Y *= scalar;
-      return ( *this );
-    }
-
-    inline Point2D& operator/= ( double scalar )
-    {
-      m_X /= scalar;
-      m_Y /= scalar;
-      return ( *this );
-    }
-
-    inline double operator [] ( unsigned int i ) const
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline double& operator [] ( unsigned int i )
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline bool operator== ( const Point2D& point ) const
-    {
-      return ( fabs(m_X - point.x()) < 0.001 && fabs(m_Y - point.y()) < 0.001 );
-    }
-
-    inline bool operator!= ( const Point2D& point ) const
-    {
-      return !((*this)== point);
-    }
-
-    /**
-    * Returns the distance to a given point.
-    * @param point The point to calculate the distance to.
-    * @return the distance between point the two points.
-     */
-    inline double distance ( const Point2D& point ) const
-    {
-      return sqrt ( ( m_X-point.x() ) * ( m_X-point.x() ) + ( m_Y-point.y() ) * ( m_Y-point.y() ) );
-    }
-
-    /**
-    * Returns the distance to origin.
-    * @return the distance between point the two points.
-     */
-    inline double distance ( ) const
-    {
-      return sqrt ( m_X * m_X + m_Y * m_Y );
-    }
-
-    /**
-    * Checks whether two points are equal.
-    * @param p The point to check equality.
-    * @return true if points are equal, false otherwise.
-     */
-    inline bool equal ( const Point2D& point ) const
-    {
-      if ( ( *this - point ).magnitude() < 0.0001 )
-      {
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-
-    /**
-    * Returns the vector which represents the point in 2D.
-    * @return vector which represents the point in 2D.
-     */
-    inline CVec2 toVector() const
-    {
-      return CVec2 ( m_X, m_Y );
-    }
-
-        /**
-     * Returns the angle of the corresponding polar coordinates.
-     * @return polar angle.
-         */
-    float getPolarAngle () const;
-
-    /**
-    * Rotate by angle (in radiants) around center.
-    * @param center Center of rotation
-    * @param angle Angle in radiants
-     */
-    inline void rotate ( const Point2D& center, float angle )
-    {
-      double x0=m_X-center.m_X;
-      double y0=m_Y-center.m_Y;
-      double xRot =  x0*cos ( angle ) - y0*sin ( angle );
-      double yRot =  x0*sin ( angle ) + y0*cos ( angle );
-      m_X = xRot+center.m_X;
-      m_Y = yRot+center.m_Y;
-    }
-
-    /**
-     * Rotate by angle (in radiants) around (0,0).
-     * @param angle Angle in radiants
-     */
-    inline void rotate ( float angle )
-    {
-      double xRot =  m_X*cos ( angle ) - m_Y*sin ( angle );
-      double yRot =  m_X*sin ( angle ) + m_Y*cos ( angle );
-      m_X = xRot;
-      m_Y = yRot;
-    }
-
-    /**
-    * Returns the string representation of the point.
-    * @return string representation of the point.
-     */
-    inline std::string toString() const
-    {
-      std::ostringstream str;
-      str << m_X << " " << m_Y;
-      return str.str();
-    }
-
-    /** @return "invalid" Point (used as end marker in vector drawings) **/
-    static Point2D invalidPoint() { return Point2D( DBL_MAX, DBL_MAX  ); }
-
-    bool isValid() { return ( ( m_X != DBL_MAX ) || ( m_Y != DBL_MAX ) ); }
-
-  protected:
-
-    double m_X;
-    double m_Y;
-};
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Polygon2D.cpp b/homer_mapping/src/OccupancyMap/Math/Polygon2D.cpp
deleted file mode 100644
index 0c5d5e52..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Polygon2D.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- *  Polygon2D.cpp
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: Polygon2D.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <stdlib.h>
-#include "Polygon2D.h"
-#include "Point2D.h"
-#include "Line2D.h"
-
-
-#define THIS Polygon2D
-
-using namespace std;
-
-vector<Line2D> THIS::getLines() const
-{
-  vector<Line2D> lines;
-  vector<Point2D>::const_iterator pointIt = m_Points.begin() +1;
-  while ( pointIt != m_Points.end() )
-  {
-    lines.push_back ( Line2D ( * ( pointIt-1 ), *pointIt ) );
-    pointIt++;
-  }
-  lines.push_back ( Line2D ( * ( m_Points.end()-1 ), *m_Points.begin() ) );
-
-  return lines;
-}
-
-void THIS::clipLines ( std::vector<Line2D>& linesToClip ) const
-{
-  // for each line to clip
-  vector<Line2D>::iterator linesIt = linesToClip.begin();
-  while ( linesIt != linesToClip.end() )
-  {
-    if ( !clipLine ( *linesIt ) )
-    {
-      // line lies completely outside of the polygon
-      linesToClip.erase ( linesIt );
-      continue;
-    }
-    linesIt++;
-  }
-}
-
-bool THIS::clipLine ( Line2D& lineToClip ) const
-{
-  vector<Line2D> polygonLines = getLines();
-  CVec2 v = lineToClip.vec();
-
-  float tIn = 0.0;
-  float tOut = 1.0;
-
-  // for each line of the polygon
-  vector<Line2D>::const_iterator polygonIt = polygonLines.begin();
-  while ( polygonIt != polygonLines.end() )
-  {
-    CVec2 n = ( *polygonIt ).getNormal();
-//     cout << "polLine "<< ( *polygonIt ).toString() << endl;
-//     cout << "n "<< n.toString() << endl;
-
-    CVec2 w0 = lineToClip.start()- ( *polygonIt ).start();
-    CVec2 w1 = lineToClip.end()- ( *polygonIt ).start();
-
-//     cout << "w0 " <<w0.toString() << endl;
-//     cout << "w1 " <<w1.toString() << endl;
-
-    float c0 = w0.dot ( n );
-    float c1 = w1.dot ( n );
-
-    // test if line lies completely inside
-    if ( c0 < 0 && c1 < 0 )
-    {
-      // do nothing;
-      polygonIt++;
-      continue;
-    }
-    // test if line lies completely outside
-    else if ( c0 >= 0 && c1 >= 0 )
-    {
-/*      cout << "return 1" << endl;*/
-      return false;
-    }
-    // clip lines
-    else
-    {
-      float denominator = v.dot ( n );
-
-      if ( denominator == 0 )
-      {
-        // impossible to happen
-        polygonIt++;
-        continue;
-      }
-
-      float t = -c0/denominator;
-
-      // test for "in" or "out" point
-      if ( denominator < 0 && t > tIn )
-      {
-        // intersection point is an "in point"
-        tIn = t;
-      }
-      else if ( denominator > 0 && t < tOut )
-      {
-        // intersection point is an "out point"
-        tOut = t;
-      }
-    }
-    polygonIt++;
-  }
-
-  if ( tIn > tOut ) {
-/*    cout << "return 2" << endl;*/
-    return false;
-  }
-
-  lineToClip.setEnd ( lineToClip.start() + tOut * v );
-  lineToClip.setStart ( lineToClip.start() + tIn * v );
-
-//   cout << "return true" << endl;
-
-  return true;
-}
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Polygon2D.h b/homer_mapping/src/OccupancyMap/Math/Polygon2D.h
deleted file mode 100644
index 16f5ca6e..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Polygon2D.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- *  Polygon2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Polygon2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef POLYGON2D_H
-#define POLYGON2D_H
-
-#include <vector>
-
-class Polygon2D;
-class Point2D;
-class Line2D;
-
-/**
- * @class Polygon2D
- *
- * @author Susanne Maur
- *
- */
-class Polygon2D
-{
-  public:
-    
-    inline Polygon2D() {}
-
-    /**
-     * Creates a new polygon
-     * The points must be given counterclockwise.
-     */
-    inline Polygon2D ( std::vector<Point2D>& points )
-    {
-      m_Points = points;
-    }
-    
-    inline ~Polygon2D() {}
-
-    inline std::vector<Point2D> getPoints() const{
-      return m_Points;
-    }
-
-    /**
-     * Returns the line representation of the polygon.
-     * @return line representation of the polygon.
-     */
-    std::vector<Line2D> getLines() const;
-
-    /**
-     * Clips lines to this polygon. Not tested!!!
-     * Implementation of Cyrus-Beck.
-     * The polygon must be difined counterclockwise.
-     * @param linesToClip The lines to clip.
-     */
-    void clipLines ( std::vector<Line2D>& linesToClip ) const;
-
-    /**
-     * Clips a line to this polygon.
-     * Implementation of Cyrus-Beck.
-     * The polygon must be difined counterclockwise.
-     * @param lineToClip The lines to clip.
-     * @return True if it was possible to clip the line, false if the line lies completely outside.
-     */
-    bool clipLine ( Line2D& lineToClip ) const;
-
-  private:
-    
-    std::vector<Point2D> m_Points;
-
-};
-
-#endif
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Pose.cpp b/homer_mapping/src/OccupancyMap/Math/Pose.cpp
deleted file mode 100644
index 6011f280..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Pose.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- *  Pose.cpp
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  $Id: Pose.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <cmath>
-
-#include "Pose.h"
-#include "Transformation2D.h"
-
-using namespace std;
-
-
-#define THIS Pose
-
-THIS::THIS(float x, float y, float theta) : Point2D(x, y) {
-  m_Theta = theta;
-}
-
-THIS::THIS() {
-  m_Theta = 0.0;
-}
-
-THIS::~THIS() {
-}
-
-float THIS::theta() const {
-  return m_Theta;
-}
-
-void THIS::setTheta(float theta) {
-  m_Theta = theta;
-}
-
-Pose THIS::operator+ ( const Transformation2D& transformation ) const {
-  float x, y, theta;
-  x = m_X + transformation.x();
-  y = m_Y + transformation.y();
-  theta = m_Theta + transformation.theta();
-  while (theta >= M_PI) theta -= 2*M_PI;
-  while (theta < -M_PI) theta += 2*M_PI;
-
-	return Pose(x, y, theta);
-}
-
-Pose THIS::operator- ( const Transformation2D& transformation ) const {
-  float x, y, theta;
-  x = m_X - transformation.x();
-  y = m_Y - transformation.y();
-  theta = m_Theta - transformation.theta();
-  while (theta >= M_PI) theta -= 2*M_PI;
-  while (theta < -M_PI) theta += 2*M_PI;
-
-	return Pose(x, y, theta);
-}
-
-Transformation2D THIS::operator- ( const Pose& pose ) const {
-  float x, y, theta;
-  x = m_X - pose.x();
-  y = m_Y - pose.y();
-
-  float s1, s2;
-  if (m_Theta > pose.theta()) {
-    s1 = -( 2 * M_PI - m_Theta + pose.theta());
-    s2 = m_Theta - pose.theta();
-  } else {
-    s1 = 2 * M_PI - pose.theta() + m_Theta;
-    s2 = -(pose.theta() - m_Theta);
-  }
-  if (fabs(s1) > fabs(s2)) {
-    theta = s2;
-  } else {
-    theta = s1;
-  }
-  while (theta >= M_PI) theta -= 2*M_PI;
-  while (theta < -M_PI) theta += 2*M_PI;
-
-	return Transformation2D(x, y, theta);
-}
-
-Pose THIS::interpolate(const Pose& referencePose, float t) const {
-
-  float newX = m_X + t * (referencePose.x() - m_X);
-  float newY = m_Y + t * (referencePose.y() - m_Y);
-
-  // Calculate mean angle by adding the vem_Thetaors in unit circle
-  float x1 = cosf(m_Theta);
-  float y1 = sinf(m_Theta);
-  float x2 = cosf(referencePose.theta());
-  float y2 = sinf(referencePose.theta());
-  float newTheta = atan2 (y1*(1-t)+y2*t, x1*(1-t)+x2*t);
-
-  return Pose(newX, newY, newTheta);
-}
-
-//THIS::THIS( ExtendedInStream& extStrm )
-//{
-//  char version;
-//  extStrm >> version;
-//  extStrm >> m_X;
-//  extStrm >> m_Y;
-//  extStrm >> m_Theta;
-//}
-
-//void THIS::storer( ExtendedOutStream& extStrm ) const
-//{
-//  char version=10;
-//  extStrm << version;
-//  extStrm << m_X;
-//  extStrm << m_Y;
-//  extStrm << m_Theta;
-//}
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Pose.h b/homer_mapping/src/OccupancyMap/Math/Pose.h
deleted file mode 100644
index d0f6574c..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Pose.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- *  Pose.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Pose.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef POSE_H
-#define POSE_H
-
-#include "Point2D.h"
-//#include "Architecture/Serializer/ExtendedOutStream.h" // TODO kann wahrscheinlich weg
-//#include "Architecture/Serializer/ExtendedInStream.h"
-
-class Transformation2D;
-
-/**
- * @class Pose
- *
- * @author Stephan Wirth, Susanne Maur (RX), David Gossow (RX)
- * @brief Class to describe and hold a pose of the robot (x, y)-Position + Orientation
- *        in world-coordinates
- */
-class Pose : public Point2D {
-
-public:
-
-    /**
-     * Constructor which initializes the members with the given values.
-     * @param x x-position
-     * @param y y-position
-     * @param theta orientation in radiants
-     */
-    Pose(float x, float y, float theta);
-
-    /**
-     * Default constructor, initializes members to 0.
-     */
-    Pose();
-
-    /**
-    * The destructor is empty.
-    */
-    ~Pose();
-
-    float theta() const;
-
-    void setTheta(float theta);
-
-    Pose operator+ ( const Transformation2D& transformation ) const;
-    Pose operator- ( const Transformation2D& transformation ) const;
-    Transformation2D operator- ( const Pose& pose ) const;
-
-    /**
-     * Interpolates between two poses and returns a pose which correlates with
-     * current pose +  t * (reference pose - current pose)
-     * @param referencePose The second pose to interpolate between.
-     * @param t The factor of interpolation.
-     * @return Interpolated pose
-     */
-    Pose interpolate(const Pose& referencePose, float t) const;
-
-//    Pose( ExtendedInStream& extStrm );
-
-//    void storer( ExtendedOutStream& extStrm ) const;
-
-protected:
-
-    float m_Theta;
-};
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/Transformation2D.cpp b/homer_mapping/src/OccupancyMap/Math/Transformation2D.cpp
deleted file mode 100644
index 693c7a39..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Transformation2D.cpp
+++ /dev/null
@@ -1,308 +0,0 @@
-/*******************************************************************************
- *  Transformation2D.cpp
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Transformation2D.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include "Transformation2D.h"
-
-#include <cmath>
-#include <vector>
-#include <iostream>
-#include <sstream>
-#include "vec2.h" // TODO das sieht nach baselib aus ggf. durch baselib ersetzen
-#include "mat2.h" // TODO das sieht nach baselib aus ggf. durch baselib ersetzen
-#include "Point2D.h"
-#include "Line2D.h"
-
-#define THIS Transformation2D
-#define BASE CVec2
-
-THIS::Transformation2D() : BASE()
-{
-  m_Theta = 0.0;
-}
-
-THIS::Transformation2D ( double x, double y, double theta ) : BASE ( x,y )
-{
-  m_Theta = theta;
-}
-
-THIS::Transformation2D ( const CVec2& vec, double theta ) : BASE ( vec )
-{
-  m_Theta = theta;
-}
-
-THIS::~Transformation2D()
-{
-}
-
-void THIS::set ( double x, double y, double theta )
-{
-  m_X = x;
-  m_Y = y;
-  m_Theta = theta;
-}
-
-double THIS::theta() const
-{
-  return m_Theta;
-}
-
-Transformation2D THIS::operator+ ( Transformation2D t ) const
-{
-  double theta = m_Theta + t.theta();
-  // TODO comment only for scan matching test
-//   while ( theta >= M_PI ) theta -= 2*M_PI;
-//   while ( theta < -M_PI ) theta += 2*M_PI;
-  return Transformation2D ( m_X + t.x(), m_Y + t.y(), theta );
-}
-
-Transformation2D& THIS::operator+= ( Transformation2D t )
-{
-  m_X += t.x();
-  m_Y += t.y();
-  m_Theta += t.theta();
-  // TODO comment only for scan matching test
-//   while ( m_Theta >= M_PI ) m_Theta -= 2*M_PI;
-//   while ( m_Theta < -M_PI ) m_Theta += 2*M_PI;
-  return ( *this );
-}
-
-Transformation2D THIS::operator- ( Transformation2D t ) const
-{
-  float s1, s2, theta;
-  if ( m_Theta > t.theta() )
-  {
-    s1 = - ( 2 * M_PI - m_Theta + t.theta() );
-    s2 = m_Theta - t.theta();
-  }
-  else
-  {
-    s1 = 2 * M_PI - t.theta() + m_Theta;
-    s2 = - ( t.theta() - m_Theta );
-  }
-  if ( fabs ( s1 ) > fabs ( s2 ) )
-  {
-    theta = s2;
-  }
-  else
-  {
-    theta = s1;
-  }
-  while ( theta >= M_PI ) theta -= 2*M_PI;
-  while ( theta < -M_PI ) theta += 2*M_PI;
-//   double theta = m_Theta - t.theta();
-//   while ( theta >= M_PI ) theta -= 2*M_PI;
-//   while ( theta < -M_PI ) theta += 2*M_PI;
-  return Transformation2D ( m_X - t.x(), m_Y - t.y(), theta );
-}
-
-Transformation2D& THIS::operator-= ( Transformation2D t )
-{
-  m_X -= t.x();
-  m_Y -= t.y();
-
-  float s1, s2, theta;
-  if ( m_Theta > t.theta() )
-  {
-    s1 = - ( 2 * M_PI - m_Theta + t.theta() );
-    s2 = m_Theta - t.theta();
-  }
-  else
-  {
-    s1 = 2 * M_PI - t.theta() + m_Theta;
-    s2 = - ( t.theta() - m_Theta );
-  }
-  if ( fabs ( s1 ) > fabs ( s2 ) )
-  {
-    theta = s2;
-  }
-  else
-  {
-    theta = s1;
-  }
-  while ( theta >= M_PI ) theta -= 2*M_PI;
-  while ( theta < -M_PI ) theta += 2*M_PI;
-  m_Theta = theta;
-
-  return ( *this );
-
-//   m_X -= t.x();
-//   m_Y -= t.y();
-//   m_Theta -= t.theta();
-//   while ( m_Theta >= M_PI ) m_Theta -= 2*M_PI;
-//   while ( m_Theta < -M_PI ) m_Theta += 2*M_PI;
-//   return ( *this );
-}
-
-Transformation2D THIS::operator* ( float factor ) const
-{
-
-  double theta = m_Theta * factor;
-  while ( theta >= M_PI ) theta -= 2*M_PI;
-  while ( theta < -M_PI ) theta += 2*M_PI;
-  return Transformation2D ( m_X * factor, m_Y * factor, theta );
-}
-
-Transformation2D& THIS::operator*= ( float factor )
-{
-  m_X *= factor;
-  m_Y *= factor;
-  m_Theta *= factor;
-  while ( m_Theta >= M_PI ) m_Theta -= 2*M_PI;
-  while ( m_Theta < -M_PI ) m_Theta += 2*M_PI;
-  return ( *this );
-}
-
-
-Transformation2D THIS::operator/ ( float factor ) const
-{
-  double theta = m_Theta / factor;
-  return Transformation2D ( m_X / factor, m_Y / factor, theta );
-}
-
-Transformation2D& THIS::operator/= ( float factor )
-{
-  m_X /= factor;
-  m_Y /= factor;
-  m_Theta /= factor;
-  return ( *this );
-}
-
-bool THIS::operator== ( Transformation2D t ) const
-{
-  if ( t.x() == m_X && t.y() == m_Y && t.theta() == m_Theta )
-  {
-    return true;
-  }
-  else
-  {
-    return false;
-  }
-}
-
-bool THIS::operator!= ( Transformation2D t ) const
-{
-  return ! ( ( *this ) ==t );
-}
-
-bool THIS::operator<= ( Transformation2D t ) const
-{
-  return ( this->magnitude() <= t.magnitude() ) && ( m_Theta <= t.theta() );
-}
-
-bool THIS::operator>= ( Transformation2D t ) const
-{
-  return ( this->magnitude() >= t.magnitude() ) && ( m_Theta >= t.theta() );
-}
-
-bool THIS::operator< ( Transformation2D t ) const
-{
-  return ( m_X < t.x() ) || ( m_Y < t.y() ) || ( ( m_Theta < t.theta() ) && ( *this <= t ) );
-}
-
-bool THIS::operator> ( Transformation2D t ) const
-{
-  return ( m_X > t.x() ) || ( m_Y > t.y() ) || ( ( m_Theta > t.theta() ) && ( *this >= t ) );
-}
-
-Transformation2D THIS::abs() const
-{
-  return Transformation2D ( std::abs ( m_X ), std::abs ( m_Y ), std::abs ( m_Theta ) );
-}
-
-Transformation2D THIS::inverse() const
-{
-  return ( *this ) * ( -1.0 );
-}
-
-Point2D THIS::transform ( const Point2D& point ) const
-{
-  CMat2 rotMat = CMat2 ( m_Theta );
-  CVec2 transVec = CVec2 ( m_X, m_Y );
-  Point2D transformedPoint = rotMat * ( point );
-  transformedPoint += transVec;
-  return transformedPoint;
-}
-
-std::vector<Point2D> THIS::transform ( const std::vector<Point2D>& points ) const
-{
-  CMat2 rotMat = CMat2 ( m_Theta );
-  CVec2 transVec = CVec2 ( m_X, m_Y );
-  std::vector<Point2D> transformedPoints;
-  std::vector<Point2D>::const_iterator iter = points.begin();
-  while ( iter != points.end() )
-  {
-    Point2D currPoint = rotMat * ( *iter );
-    currPoint += transVec;
-    transformedPoints.push_back ( currPoint );
-    iter++;
-  }
-  return transformedPoints;
-}
-
-// // Reihenfolge rotation/translation vertauscht !!!
-// Point2D THIS::transform ( Point2D point ) const
-// {
-//   CMat2 rotMat = CMat2 ( m_Theta );
-//   CVec2 transVec = CVec2 ( m_X, m_Y );
-//   Point2D transformedPoint = point+transVec;
-//   transformedPoint = rotMat * point;
-//   return transformedPoint;
-// }
-//
-// // Reihenfolge rotation/translation vertauscht !!!
-// std::vector<Point2D> THIS::transform ( std::vector<Point2D> points ) const
-// {
-//   CMat2 rotMat = CMat2 ( m_Theta );
-//   CVec2 transVec = CVec2 ( m_X, m_Y );
-//   std::vector<Point2D> transformedPoints;
-//   std::vector<Point2D>::const_iterator iter = points.begin();
-//   while ( iter != points.end() )
-//   {
-//     Point2D currPoint = ( *iter )+ transVec;
-//     currPoint = rotMat * currPoint;
-//     transformedPoints.push_back ( currPoint );
-//     iter++;
-//   }
-//   return transformedPoints;
-// }
-
-Line2D THIS::transform ( const Line2D& line ) const
-{
-  CMat2 rotMat = CMat2 ( m_Theta );
-  CVec2 transVec = CVec2 ( m_X, m_Y );
-  Line2D transformedLine = Line2D ( rotMat * line.start() + transVec, rotMat * line.end() + transVec );
-  return transformedLine;
-}
-
-std::vector<Line2D> THIS::transform ( const std::vector<Line2D>& lines ) const
-{
-  //CMat2 rotMat = CMat2 ( m_Theta );
-  //CVec2 transVec = CVec2 ( m_X, m_Y );
-  std::vector<Line2D> transformedLines;
-  std::vector<Line2D>::const_iterator iter = lines.begin();
-  while ( iter != lines.end() )
-  {
-    transformedLines.push_back ( transform(*iter) );
-    iter++;
-  }
-  return transformedLines;
-}
-
-std::string THIS::toString() const
-{
-  std::ostringstream str;
-  str << "deltaX: " << m_X << ", deltaY: " << m_Y << ", deltaTheta: " << m_Theta;
-  return str.str();
-}
-
-
-
-#undef THIS
-#undef BASE
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Transformation2D.h b/homer_mapping/src/OccupancyMap/Math/Transformation2D.h
deleted file mode 100644
index 59a54d82..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Transformation2D.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- *  Transformation2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Transformation2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef TRANSFORMATION2D_H
-#define TRANSFORMATION2D_H
-
-#include <cmath>
-#include <vector>
-//#include "Workers/Math/Vec.h"
-#include "Point2D.h"
-#include "Line2D.h"
-
-
-/**
- * @class Transformation2D
- *
- * @author Susanne Maur
- *
- * @brief Class to describe a transformation of poses in 2D.
- * This inplies a translation in x and y direction each and a rotation.
- */
-class Transformation2D : public CVec2
-{
-
-  public:
-
-    /**
-     * Constructor that initializes the members.
-     * @param x translation in x direction in m
-     * @param y translation in y direction in m
-     * @param theta rotation in radiants
-     */
-    Transformation2D ( double x, double y, double theta );
-
-    /**
-     * Constructor that initializes the members.
-     * @param vec a vector which represents the translation in x and y direction
-     * @param theta rotation in radiants
-     */
-    Transformation2D ( const CVec2& vec, double theta );
-
-    /**
-     * Default constructor sets all members to 0.0.
-     */
-    Transformation2D();
-
-    /**
-     * Default destructor.
-     */
-    ~Transformation2D();
-
-    /**
-     * Sets the values of transformation.
-     * @param x translation in x direction in mm
-     * @param y translation in y direction in mm
-     * @param theta rotation in radiants
-     */
-    void set ( double x, double y, double theta );
-
-    /**
-     * Returns the rotation in radiants.
-     * @return rotation in radiants
-     */
-    double theta() const;
-
-    /**
-     * Adds two transformations.
-     */
-    Transformation2D operator+ ( Transformation2D t ) const;
-    Transformation2D& operator+= ( Transformation2D t );
-
-    /**
-     * Subtracts two transformations.
-     */
-    Transformation2D operator- ( Transformation2D t ) const;
-    Transformation2D& operator-= ( Transformation2D t );
-
-    /**
-     * Scales a transformation by a factor
-     */
-    Transformation2D operator* ( float factor ) const;
-    Transformation2D& operator*= ( float factor );
-
-    /**
-     * Scales a transformation by a factor
-     */
-    Transformation2D operator/ ( float factor ) const;
-    Transformation2D& operator/= ( float factor );
-
-    /**
-     * Test equality of transformations.
-     */
-    bool operator== ( Transformation2D t ) const;
-    bool operator!= ( Transformation2D t ) const;
-
-    /**
-     * Compare transformations.
-     * (attention: algebraic signs are taken into account, if necessary use fabs())
-     */
-    bool operator<= ( Transformation2D t ) const;
-    bool operator>= ( Transformation2D t ) const;
-    bool operator< ( Transformation2D t ) const;
-    bool operator> ( Transformation2D t ) const;
-
-    /**
-     * Applies abs() on every attribute.
-     */
-    Transformation2D abs() const;
-
-    /**
-     * Inverts the transformation, scales every attribute with -1.
-     */
-    Transformation2D inverse() const;
-
-    /**
-     * Transformes points by first rotation, then translating.
-     */
-    Point2D transform ( const Point2D& point ) const;
-    std::vector<Point2D> transform ( const std::vector<Point2D>& points ) const;
-
-    /**
-     * Transformes lines by first rotation, then translating.
-     */
-    Line2D transform ( const Line2D& line ) const;
-    std::vector<Line2D> transform ( const std::vector<Line2D>& lines ) const;
-
-    /**
-     * Returns the string representation of the transformation.
-     * @return string representation of the transformation.
-     */
-    std::string toString() const;
-
-  private:
-    double m_Theta;
-};
-
-#endif
-
diff --git a/homer_mapping/src/OccupancyMap/Math/Vector3D.cpp b/homer_mapping/src/OccupancyMap/Math/Vector3D.cpp
deleted file mode 100644
index 495846a7..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Vector3D.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- *  Vector3D.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $
- *******************************************************************************/
-
-#include "Vector3D.h"
-
-#define THIS Vector3D
-
-using namespace std;
-
-std::string THIS::toString( int precision, std::string name )
-{
-  std::ostringstream s;
-
-  s.precision( precision );
-  s.setf(ios::fixed,ios::floatfield);
-
-  for ( unsigned row=0; row<3; row++ )
-  {
-    if ( name != "" )
-    {
-      if ( row==1 )
-      {
-        s << name << " = ";
-      }
-      else
-      {
-        s.width( name.length()+3 );
-        s << "";
-      }
-    }
-
-    s << "( ";
-    s.width( precision+4 );
-    switch ( row )
-    {
-      case 0:
-        s << m_X << " ";
-        break;
-      case 1:
-        s << m_Y << " ";
-        break;
-      case 2:
-        s << m_Z << " ";
-        break;
-    }
-    s << ")" << endl;
-  }
-  return s.str();
-}
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/Vector3D.h b/homer_mapping/src/OccupancyMap/Math/Vector3D.h
deleted file mode 100644
index ae656232..00000000
--- a/homer_mapping/src/OccupancyMap/Math/Vector3D.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- *  Vector3D.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#ifndef VEC3_H
-#define VEC3_H
-
-#include <math.h>
-#include <assert.h>
-#include <string>
-#include "vec2.h"
-
-class Vector3D
-{
-  public:
-
-    Vector3D();
-    Vector3D ( float x, float y, float z );
-    Vector3D ( const CVec2& v, float z);
-
-    Vector3D ( const Vector3D& v2 );
-
-    Vector3D operator+ ( const Vector3D& vVector ) const;
-    Vector3D& operator+= ( const Vector3D& vVector );
-    Vector3D operator+() const;
-
-    Vector3D operator- ( const Vector3D& vVector ) const;
-    Vector3D& operator-= ( const Vector3D& vVector );
-    Vector3D operator-() const;
-
-    // Dot
-    float operator* ( const Vector3D& vVector ) const;
-
-    // Cross
-    Vector3D operator^ ( const Vector3D& vVector2 ) const;
-
-    // Scalar Mult
-    Vector3D operator* ( const float num ) const;
-    Vector3D& operator*= ( const float num );
-    Vector3D operator/ ( float num ) const;
-    Vector3D& operator/= ( const float num );
-
-    bool operator < ( const Vector3D& vVec ) const;
-    bool operator > ( const Vector3D& vVec ) const;
-    bool operator== ( const Vector3D& v1 ) const;
-
-    float operator [] ( const unsigned int i ) const;
-    float& operator [] ( const unsigned int i );
-
-    void set ( float fx, float fy, float fz );
-
-    float x() const {
-      return m_X;
-    }
-
-    float y() const {
-      return m_Y;
-    }
-
-    float z() const {
-      return m_Z;
-    }
-
-    void lerp ( const Vector3D& v1, const Vector3D& v2, float f );
-
-    float magnitude() const;
-
-    std::string toString( int precision=3, std::string name="" );
-
-  private:
-    float m_X, m_Y, m_Z;
-};
-
-#include "vec3_inl.h"
-
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/mat2.h b/homer_mapping/src/OccupancyMap/Math/mat2.h
deleted file mode 100644
index 254e8dc6..00000000
--- a/homer_mapping/src/OccupancyMap/Math/mat2.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- *  mat2.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#ifndef MAT2_H
-#define MAT2_H
-
-#include <math.h>
-#include "Point2D.h"
-#include "vec2.h"
-
-class CMat2
-{
-	public:
-		CMat2();
-		CMat2(float rot);
-		~CMat2();
-
-		CMat2 operator *(const CMat2 &mat) const;
-
-		CVec2 operator *(const CVec2& v) const;
-
-		Point2D operator *(const Point2D& p) const;
-        
-        float& operator [] (unsigned int position) {
-            return fMatrix[position];
-        }
-        
-        CMat2 operator +(const CMat2 rhs) const {
-            CMat2 newMatrix;
-            for (unsigned int i = 0; i < 4; i++) {
-                newMatrix[i] = valueAt(i) + rhs.valueAt(i);
-            }
-            return newMatrix;
-        }
-        
-        CMat2 operator -(const CMat2 rhs) const {
-            CMat2 newMatrix;
-            for (unsigned int i = 0; i < 4; i++) {
-                newMatrix[i] = valueAt(i) - rhs.valueAt(i);
-            }
-            return newMatrix;
-        }
-        
-        float valueAt(unsigned int position) const{
-            return fMatrix[position];
-        }
-        
-		union
-		{
-			float fMatrix[4];
-			float m[2][2];
-			struct
-			{
-				float xx, xy;
-				float yx, yy;
-			};
-		};
-
-		void transpose();
-		void loadIdentity();
-
-		void makeRotation(float fA);
-
-		bool invert();
-};
-
-
-
-#include "mat2_inl.h"
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/mat2_inl.h b/homer_mapping/src/OccupancyMap/Math/mat2_inl.h
deleted file mode 100644
index e3f77e16..00000000
--- a/homer_mapping/src/OccupancyMap/Math/mat2_inl.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- *  mat2_inl.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#include <assert.h>
-
-inline CMat2::CMat2(){
-    for (unsigned int i = 0; i < 4; i++) {
-        fMatrix[i] = 0;
-    }
-}
-
-inline CMat2::~CMat2()
-{}
-
-inline CMat2::CMat2(float rot)
-{
-	makeRotation(rot);
-}
-
-inline CMat2 CMat2::operator * ( const CMat2 & mat ) const
-{
-    CMat2 retValue;
-    for (unsigned int line = 0; line < 2; line++) {
-        for (unsigned int column = 0; column < 2; column++) {
-            retValue[line*2 + column] = valueAt(line*2 + column) + mat.valueAt(column*2 + line);
-        }
-    }
-    return retValue;
-}
-
-inline CVec2 CMat2::operator * ( const CVec2& v ) const
-{
-	return CVec2(xx*v[0] + xy*v[1],yx*v[0] + yy*v[1]);
-}
-
-inline Point2D CMat2::operator * ( const Point2D& p ) const
-{
-	return Point2D(xx*p.x() + xy*p.y(), yx*p.x() + yy*p.y());
-}
-
-inline void CMat2::transpose()
-{
-	float t=xy;
-	xy=yx;
-	yx=t;
-}
-
-inline void CMat2::loadIdentity()
-{
-	xx=1.0f; xy=0.0f;
-	yx=0.0f; yy=1.0f;
-}
-
-inline void CMat2::makeRotation ( float fA )
-{
-	xx=yy=cosf(fA);
-	yx=sinf(fA);
-	xy=-yx;
-}
-
-inline bool CMat2::invert()
-{
-	CMat2 tmp;
-	float det = fMatrix[0]*fMatrix[3] - fMatrix[1]*fMatrix[2];
-
-	if(fabs(det) < 0.001f)	return false;
-
-	det = 1.0 / det;
-	tmp.fMatrix[0] = fMatrix[3]*det;
-	tmp.fMatrix[1] = -fMatrix[1]*det;
-	tmp.fMatrix[2] = -fMatrix[2]*det;
-	tmp.fMatrix[3] = fMatrix[0]*det;
-
-	(*this)=tmp;
-	return true;
-}
-
-
-
-
diff --git a/homer_mapping/src/OccupancyMap/Math/mat3.cpp b/homer_mapping/src/OccupancyMap/Math/mat3.cpp
deleted file mode 100755
index 306877e8..00000000
--- a/homer_mapping/src/OccupancyMap/Math/mat3.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- *  mat3.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus, Susanne Maur
- *******************************************************************************/
-
-#include "mat3.h"
-#include "math.h"
-
-#define THIS CMat3
-
-//----------------------------------------------------------------------------------------------------------
-THIS::~CMat3()
-{
-}
-//----------------------------------------------------------------------------------------------------------
-void THIS::transpose()
-{
-	float temp;
-
-	temp=fMatrix[1];
-	fMatrix[1]=fMatrix[3];
-	fMatrix[3]=temp;
-
-	temp=fMatrix[2];
-	fMatrix[2]=fMatrix[6];
-	fMatrix[6]=temp;
-
-	temp=fMatrix[5];
-	fMatrix[5]=fMatrix[7];
-
-	fMatrix[7]=temp;
-}
-
-//----------------------------------------------------------------------------------------------------------
-
-void THIS::reverse() 
-{
-  CMat3 temp;
-
-  temp[0]=fMatrix[4]*fMatrix[8] - fMatrix[5]*fMatrix[7]; 
-  temp[1]=fMatrix[2]*fMatrix[7] - fMatrix[1]*fMatrix[8];    
-  temp[2]=fMatrix[1]*fMatrix[5] - fMatrix[2]*fMatrix[4];
-  temp[3]=fMatrix[5]*fMatrix[6] - fMatrix[3]*fMatrix[8]; 
-  temp[4]=fMatrix[0]*fMatrix[8] - fMatrix[2]*fMatrix[6];    
-  temp[5]=fMatrix[2]*fMatrix[3] - fMatrix[0]*fMatrix[5];
-  temp[6]=fMatrix[3]*fMatrix[7] - fMatrix[4]*fMatrix[6]; 
-  temp[7]=fMatrix[1]*fMatrix[6] - fMatrix[0]*fMatrix[7];    
-  temp[8]=fMatrix[0]*fMatrix[4] - fMatrix[1]*fMatrix[3];
-
-  *this = (temp) * (1.0/determinant());
-}
-
-//----------------------------------------------------------------------------------------------------------
-void THIS::loadIdentity()
-{
-	fMatrix[0]=1.0f; fMatrix[1]=0;    fMatrix[2]=0;
-	fMatrix[3]=0;    fMatrix[4]=1.0f; fMatrix[5]=0;
-	fMatrix[6]=0;    fMatrix[7]=0;    fMatrix[8]=1.0f;
-}
-//----------------------------------------------------------------------------------------------------------
-void THIS::makeRotationX(float fA)
-{
-	// 1  0  0  0
-	// 0  c -s  0
-	// 0  s  c  0
-	// 0  0  0  1
-	float c=cosf(fA);
-	float s=sinf(fA);
-	fMatrix[0]=1; fMatrix[1]=0; fMatrix[2]=0; 
-	fMatrix[3]=0; fMatrix[4]=c; fMatrix[5]=s; 
-	fMatrix[6]=0; fMatrix[7]=-s; fMatrix[8]=c;
-
-}
-//----------------------------------------------------------------------------------------------------------
-void THIS::makeRotationY(float fA)
-{
-	// c  0  s  0
-	// 0  1  0  0
-	//-s  0  c  0
-	// 0  0  0  1
-	float c=cosf(fA);
-	float s=sinf(fA);
-	fMatrix[0]=c; fMatrix[1]=0; fMatrix[2]=-s; 
-	fMatrix[3]=0; fMatrix[4]=1; fMatrix[5]=0; 
-	fMatrix[6]=s; fMatrix[7]=0; fMatrix[8]=c; 
-}
-//----------------------------------------------------------------------------------------------------------
-void THIS::makeRotationZ(float fA)
-{
-	// c -s  0  0
-	// s  c  0  0
-	// 0  0  1  0
-	// 0  0  0  1
-
-	float c=cosf(fA);
-	float s=sinf(fA);
-	fMatrix[0]=c; fMatrix[1]=s; fMatrix[2]=0; 
-	fMatrix[3]=-s; fMatrix[4]=c; fMatrix[5]=0; 
-	fMatrix[6]=0; fMatrix[7]=0; fMatrix[8]=1; 
-}
-//----------------------------------------------------------------------------------------------------------
-void THIS::makeScale(const Vector3D& vScale)
-{
-	fMatrix[0]=vScale[0]; fMatrix[1]=0; fMatrix[2]=0; 
-	fMatrix[3]=0; fMatrix[4]=vScale[1]; fMatrix[5]=0; 
-	fMatrix[6]=0; fMatrix[7]=0; fMatrix[8]=vScale[2]; 
-}
-//----------------------------------------------------------------------------------------------------------
-CMat3 THIS::operator*(const CMat3& mat) const
-{
-	CMat3 r;
-	float* r0=(float*)&r.fMatrix;
-	float* m2=(float*)&fMatrix;
-	float* m1=(float*)&mat.fMatrix;
-
-	r0[0]=m1[0]*m2[0]+ m1[1]*m2[3]+ m1[2]*m2[6];
-	r0[1]=m1[0]*m2[1]+ m1[1]*m2[4]+ m1[2]*m2[7];
-	r0[2]=m1[0]*m2[2]+ m1[1]*m2[5]+ m1[2]*m2[8];
-	
-	r0[3]=m1[3]*m2[0]+ m1[4]*m2[3]+ m1[5]*m2[6];
-	r0[4]=m1[3]*m2[1]+ m1[4]*m2[4]+ m1[5]*m2[7];
-	r0[5]=m1[3]*m2[2]+ m1[4]*m2[5]+ m1[5]*m2[8];
-	
-	r0[6]=m1[6]*m2[0]+ m1[7]*m2[3]+ m1[8]*m2[6];
-	r0[7]=m1[6]*m2[1]+ m1[7]*m2[4]+ m1[8]*m2[7];
-	r0[8]=m1[6]*m2[2]+ m1[7]*m2[5]+ m1[8]*m2[8];
-	
-
-	return r;
-}
-//----------------------------------------------------------------------------------------------------------
-CMat3 THIS::operator *(float f) const {
-  CMat3 newMatrix;
-  for (unsigned i = 0; i < 9; i++) {
-      newMatrix[i] = fMatrix[i] * f;
-  }
-  return newMatrix;
-}
-//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-
-CMat3& THIS::operator *=(float f) {
-  for (unsigned i = 0; i < 9; i++) {
-      fMatrix[i] *= f;
-  }
-  return *this;
-}
-//----------------------------------------------------------------------------------------------------------
-Vector3D THIS::operator *(const Vector3D& v) const {
-  Vector3D temp;
-  temp[0]=fMatrix[0]*v[0]+fMatrix[1]*v[1]+fMatrix[2]*v[2];
-  temp[1]=fMatrix[3]*v[0]+fMatrix[4]*v[1]+fMatrix[5]*v[2];
-  temp[2]=fMatrix[6]*v[0]+fMatrix[7]*v[1]+fMatrix[8]*v[2];
-  return temp;
-}
-//----------------------------------------------------------------------------------------------------------
-CMat3 THIS::operator +(const CMat3& mat) {
-  CMat3 newMatrix;
-  for (unsigned i = 0; i < 9; i++) {
-      newMatrix[i] = mat.valueAt(i) + valueAt(i);
-  }
-  return newMatrix;
-}
-
-//----------------------------------------------------------------------------------------------------------
-std::string THIS::toString() const
-{
-  std::ostringstream st;
-  for (int i=0;i<3;i++)
-  {
-    for (int j=0;j<3;j++)
-    {
-      st<<m[j][i]<<" ";
-    }
-    st<<"\n";
-  }
-  return st.str();
-}
-//----------------------------------------------------------------------------------------------------------
-float THIS::determinant() const {
-  return fMatrix[0]*fMatrix[4]*fMatrix[8] + fMatrix[1]*fMatrix[5]*fMatrix[6 ] + fMatrix[2]*fMatrix[3]*fMatrix[7]
-      - fMatrix[2]*fMatrix[4]*fMatrix[6] - fMatrix[1]*fMatrix[3]*fMatrix[8] - fMatrix[0]*fMatrix[5]*fMatrix[7];
-}
-//----------------------------------------------------------------------------------------------------------
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/mat3.h b/homer_mapping/src/OccupancyMap/Math/mat3.h
deleted file mode 100755
index 629b9e7d..00000000
--- a/homer_mapping/src/OccupancyMap/Math/mat3.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- *  mat3.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus, Susanne Maur
- *******************************************************************************/
-#ifndef MAT3_H
-#define MAT3_H
-
-#include <iostream>
-#include <sstream>
-#include <assert.h>
-#include "Vector3D.h"
-
-class CMat3 {
-  public:
-	  CMat3();
-    CMat3( float xx, float xy, float xz, float yx, float yy, float yz, float zx, float zy, float zz );
-	  ~CMat3();
-  
-    /** overwritten operator**/
-	  CMat3 operator *(const CMat3 &mat) const;  
-    CMat3 operator *(float f) const;  
-    CMat3& operator *=(float f);  
-    Vector3D operator *(const Vector3D& v) const;      
-    float& operator [](const unsigned value);    
-    CMat3 operator +(const CMat3& mat1);
-    
-    /** @return value at position **/
-    float valueAt(unsigned i) const;
-   
-    /** set value at position **/
-    void setValue(unsigned line, unsigned column, float value);
-  
-    /** @return determinant of matrix **/
-    float determinant() const;
-      
-    /** transpose matrix **/
-	  void transpose();
-    /** reverse matrix **/
-    void reverse();
-
-    /** create identity matrix **/
-	  void loadIdentity();
-  
-    /** create rotation matrix **/
-	  void makeRotationX(float fA);
-	  void makeRotationY(float fA);
-	  void makeRotationZ(float fA);
-
-    /** create scale matrix **/
-	  void makeScale(const Vector3D& vScale);
-	  //void BuildRPY(float fRoll, float fPitch, float fYaw);
-      
-	  std::string toString() const;
-
-  private:
-	  union
-	  {
-		  float fMatrix[9];
-		  float m[3][3];
-		  struct
-		  {
-			  float xx, xy, xz;
-			  float yx, yy, yz;
-			  float zx, zy, zz;
-		  };
-	  };
-};
-
-#include "mat3.inl"
-
-#endif
-
diff --git a/homer_mapping/src/OccupancyMap/Math/mat3.inl b/homer_mapping/src/OccupancyMap/Math/mat3.inl
deleted file mode 100755
index ae2e6c5f..00000000
--- a/homer_mapping/src/OccupancyMap/Math/mat3.inl
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- *  mat3.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus, Susanne Maur
- *******************************************************************************/
-
-#define THIS CMat3
-
-//----------------------------------------------------------------------------------------------------------
-inline THIS::CMat3()
-{
-	for(int i=0;i<9;i++) fMatrix[i]=0.0f;
-}
-//----------------------------------------------------------------------------------------------------------
-inline THIS::CMat3( float xx, float xy, float xz, float yx, float yy, float yz, float zx, float zy, float zz )
-{
-  fMatrix[0] = xx;
-  fMatrix[1] = xy;
-  fMatrix[2] = xz;
-  fMatrix[3] = yx;
-  fMatrix[4] = yy;
-  fMatrix[5] = yz;
-  fMatrix[6] = zx;
-  fMatrix[7] = zy;
-  fMatrix[8] = zz;
-}
-//----------------------------------------------------------------------------------------------------------
-inline float& THIS::operator [](const unsigned value) {
-  return fMatrix[value];
-}
-//----------------------------------------------------------------------------------------------------------
-inline float THIS::valueAt(unsigned i) const {
-  return fMatrix[i];
-}
-//----------------------------------------------------------------------------------------------------------
-inline void THIS::setValue(unsigned line, unsigned column, float value) {
-  m[line][column] = value;
-}
-//----------------------------------------------------------------------------------------------------------
-
-#undef THIS
diff --git a/homer_mapping/src/OccupancyMap/Math/misc.cpp b/homer_mapping/src/OccupancyMap/Math/misc.cpp
deleted file mode 100644
index 1f4facd6..00000000
--- a/homer_mapping/src/OccupancyMap/Math/misc.cpp
+++ /dev/null
@@ -1,390 +0,0 @@
-/*******************************************************************************
- *  misc.cpp
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#include "vec2.h"
-#include "misc.h"
-#include <iostream>
-#include "math.h"
-#include <assert.h>
-#include "Obb2D.h"
-
-/**
-*	m - center of the circle
-*	r - radius of the circle
-*	x - starting point of the ray
-*	t - ray
-*	f - param - return value
-*/
-bool intersectRayCircle(const CVec2& m, float r, const CVec2& x, const CVec2& t, float& f)
-{
-	//|x-m|=r
-	//|x+r*t-m|=r
-	//(x+r*t-m)^2=r^2
-	//((x-m)+r*t)^2=r^2
-	//(x-m)^2+2*(x-m)*r*t+r^2*t^2=r^2
-	
-	//r^2*t^2+r*2*(x-m)*t+(x-m)^2-r^2
-	
-	
-	float invtSqr=1.0f/t.sqr();
-	float p = 2.0f*((x-m)*t)*invtSqr;
-	float q = ((m-x).sqr() - r*r)*invtSqr;	
-	float diskr = p*p*0.25f - q;
-	
-	if (diskr < 0)
-	{
-		return false;
-	}
-
-	diskr=sqrtf(diskr);
-	f = -0.5f*p - diskr;
-	
-	if (f<0)
-	{
-		f = -0.5f*p + diskr;
-		if (f>0)
-		{
-			return true;
-		}
-		else
-		{
-			return false;
-		}
-	}
-/*	
-	if (f<0)
-	{
-		std::cout << "smaller"  << f << std::endl;
-		if (t*(m-x)>0)
-		{
-			f=0.001;
-			return true;
-		}
-		else
-			return false;
-	}
-	*/
-	return true;
-
-}
-
-
-bool intersectRayLineSegment(const CVec2& a, const CVec2& b, const CVec2& x, const CVec2& t, float&f)
-{
-	CVec2 n=(b-a).getNormal();
-	
-	float denom=t*n;
-		
-	if (fabs(denom)<0.000001f)
-		return false;
-		
-	f=(n*a-n*x)/denom;
-	
-	if (f<0)
-	{
-		return false;
-	}
-		
-	CVec2 pt=x+t*f;
-	if ((a-pt)*(b-pt)<0)
-		return true;	
-	return false;
-}
-
-float shortestDistanceToLineSegment(const CVec2& a, const CVec2& b, const CVec2& x)
-{
-	CVec2 dir=b-a;
-	
-	if ( (dir*dir) < 0.00001 )
-	{
-		float m1=(x-a).magnitude();
-		float m2=(x-b).magnitude();
-		if (m1<m2) return m1;
-		else return m2;
-	}
-		
-	float r=(dir*x-dir*a)/(dir*dir);
-	if (r<=0.0f)
-		return (x-a).magnitude();
-	if (r>=1.0f)
-		return (x-b).magnitude();
-	
-	return (a+r*dir-x).magnitude();
-	
-}
-
-bool intersectRayCapsule(const CVec2& x, const CVec2& t, const CVec2& a, const CVec2& b, float radius, float& f)
-{
-	f=99999999;
-	float r;
-	bool hadInt=false;
-	if (intersectRayCircle(a,radius,x,t,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	if (intersectRayCircle(b,radius,x,t,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	CVec2 n=normalize(b-a).getNormal();
-	if (intersectRayLineSegment(a+radius*n,b+radius*n,x,t,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	if (intersectRayLineSegment(a-radius*n,b-radius*n,x,t,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	return hadInt;
-}
-
-// c - punkt wo arc startet
-// p - zentrum des arcs
-// r0 - arc radius
-// hd - heading
-// m1 - kreiszentrum
-// r1 - kreisradius
-// angle - output
-bool intersectPathCircle(const CVec2& c, const CVec2& p, float r0, const CVec2& hd, const CVec2& m1, float r1, float& angle)
-{
-	CVec2 vec=p-m1;
-	float s=vec.sqr();
-	if (s>sqr(fabs(r0)+r1))	
-		return false;
-	
-	if (s<sqr(fabs(r0)-r1))
-		return false;
-	
-	float d=sqrtf(s);
-	
-	float b=(r0*r0-r1*r1+s)/(2*d);
-	
-	CVec2 mid=p-vec*(b/d);
-	
-	float h=sqrtf(r0*r0-b*b);
-	//std::cout << " h :  " << h << std::endl;
-	
-	CVec2 n=(vec*(h/d)).getNormal();
-	
-	
-	//CVec2 pm=p-m1;
-	
-	CVec2 p1=(mid+n-p);
-	CVec2 p2=(mid-n-p);
-	
-	CVec2 pc=normalize(c-p);
-	
-	float angle0=acosf(normalize(p1)*pc);
-	float angle1=acosf(normalize(p2)*pc);
-	
-	//std::cout << "angle0: " << angle0 << std::endl;
-	
-	if ((p1*hd)<0) angle0=2*M_PI-angle0;
-	if ((p2*hd)<0) angle1=2*M_PI-angle1;
-	
-	if (angle0<angle1) angle=angle0;
-	else angle=angle1;
-	
-	//angle=angle0;
-	
-	return true;
-	
-
-}
-
-bool intersectPathLine(const CVec2& c, const CVec2& p, float r0, const CVec2& hd, const CVec2& p1, const CVec2& p2, float& angle)
-{
-	CVec2 vec=p2-p1;
-
-	
-	/*
-	float invtSqr=1.0f/t.sqr();
-	float p = 2.0f*((x-m)*t)*invtSqr;
-	float q = ((m-x).sqr() - r*r)*invtSqr;	
-	float diskr = p*p*0.25f - q;
-	*/
-	
-	if (((p1-p).sqr()<r0*r0)&&((p2-p).sqr()<r0*r0))
-		return false;
-	
-	
-	float invtSqr=1.0f/vec.sqr();
-	float pa = 2.0f*((p1-p)*vec)*invtSqr;
-	float qi = ((p-p1).sqr() - r0*r0)*invtSqr;	
-	float diskr = pa*pa*0.25f - qi;
-	
-	if (diskr < 0)
-	{
-		return false;
-	}
-	
-	float sqrtfdiskr=sqrtf(diskr);
-
-	float f1 = -0.5f*pa - sqrtfdiskr;
-	float f2 = -0.5f*pa + sqrtfdiskr;
-	
-	if (f1>1) return false;
-	if (f2<0) return false;
-	
-	//std::cout << "f1: " << f1 << " f2: " << f2 << std::endl;
-	
-	CVec2 int1=p1+f1*vec;
-	CVec2 int2=p1+f2*vec;
-	
-	//assert((int2-int1).magnitude()<(p1-p2).magnitude());
-	
-	CVec2 pc=normalize(c-p);
-	
-	float angle0=acosf(normalize(int1-p)*pc);
-	float angle1=acosf(normalize(int2-p)*pc);
-	
-	
-	if ((int1-p)*hd<0)
-	{
-		angle0=2*M_PI-angle0;
-	}
-	if ((int2-p)*hd<0)
-	{
-		angle1=2*M_PI-angle1;
-	}
-	
-	
-	if (angle0<angle1) angle=angle0;
-	else angle=angle1;
-	
-	if (f1<0) angle=angle1;
-	if (f2>1) angle=angle0;
-
-	
-	
-	return true;
-	
-}
-
-// c - punkt wo arc startet
-// p - arc zentrum
-// r0 - radius des arcs
-// hd - heading
-// a - linienanfang
-// b - linienende
-// radius - linienradius
-// r [out] - wie weit ging der arc?
-
-bool intersectPathCapsule(const CVec2& c, const CVec2& p, float r0, const CVec2& hd, const CVec2& a, const CVec2& b, float radius, float& f)
-{
-	f=99999999;
-	float r;
-	bool hadInt=false;
-	if (intersectPathCircle(c,p,r0,hd,a,radius,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	if (intersectPathCircle(c,p,r0,hd,b,radius,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	CVec2 n=normalize(b-a).getNormal();
-	if (intersectPathLine(c,p,r0,hd,a+radius*n,b+radius*n,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	if (intersectPathLine(c,p,r0,hd,a-radius*n,b-radius*n,r))
-	{
-		if (r<f)
-			f=r;
-		hadInt=true;
-	}
-	return hadInt;
-}
-
-
-bool isInAABB(const std::pair<CVec2,CVec2>& aabb, const CVec2& p)
-{
-	const CVec2& mins=aabb.first;
-	const CVec2& maxs=aabb.second;
-	if ((p[0]>mins[0]) &&(p[1]>mins[1])&&(p[0]<maxs[0]) &&(p[1]<maxs[1]))
-		return true;
-	return false;
-}
-
-bool testAABBOverlap(const std::pair<CVec2,CVec2>& a, const std::pair<CVec2,CVec2>& b)
-{
-	const CVec2& vMins=b.first;
-	const CVec2& vMaxs=b.second;
-	CVec2 B=(vMins+vMaxs)*0.5f;
-	CVec2 A=(a.first+a.second)*0.5f;
-	CVec2 E=a.second-A;
-	CVec2 bE=vMaxs-B;
-
-	const CVec2 T = B - A;//vector from A to B
-	return fabs(T[0])  <= (E[0] + bE[0]) 
-			&&
-			fabs(T[1]) <= (E[1] + bE[1]);
-
-}
-
-float computeOBBIntersection(const CVec2& a, const CVec2& b, const CVec2& c, const CVec2& d, float size)
-{
-	OBB2D g;
-	CVec2 dab=normalize(b-a)*size;
-	CVec2 nab=dab.getNormal();
-	g[0]=a+nab-dab;
-	g[1]=a-nab-dab;
-	g[2]=b-nab+dab;
-	g[3]=b+nab+dab;
-	
-	
-	OBB2D h;
-	CVec2 dcd=normalize(d-c)*size;
-	CVec2 ncd=dcd.getNormal();
-	h[0]=c+ncd-dcd;
-	h[1]=c-ncd-dcd;
-	h[2]=d-ncd+dcd;
-	h[3]=d+ncd+dcd;
-	
-	std::pair<CVec2,CVec2> aabb=g.computeAABB();
-	std::pair<CVec2,CVec2> aabb2=h.computeAABB();
-	
-	//static int all=0;
-	//all++;
-	
-	
-	if (!testAABBOverlap(aabb,aabb2))
-	{
-		return 0;
-	}
-	
-	//h.clip(g);
-	/*
-	static int clips=0;
-	clips++;
-	if (clips%10000==0)
-		std::cout<<"clips: " << clips << " rate: " << float(clips)/float(all) << std::endl;
-	*/
-	return h.computeClippedArea(g)/(2*size*((a-b).magnitude()+2*size));
-	
-}
-
-
-
-
diff --git a/homer_mapping/src/OccupancyMap/Math/misc.h b/homer_mapping/src/OccupancyMap/Math/misc.h
deleted file mode 100644
index 5175e3cd..00000000
--- a/homer_mapping/src/OccupancyMap/Math/misc.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- *  misc.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#ifndef MISC_H
-#define MISC_H
-
-template<class T>
-T sqr(T f)
-{
-	return f*f;
-}
-
-bool intersectRayCircle(const CVec2& m, float r, const CVec2& x, const CVec2& t, float& f);
-bool intersectRayLineSegment(const CVec2& a, const CVec2& b, const CVec2& x, const CVec2& t, float&f);
-float shortestDistanceToLineSegment(const CVec2& a, const CVec2& b, const CVec2& x);
-bool intersectRayCapsule(const CVec2& x, const CVec2& t, const CVec2& a, const CVec2& b, float radius, float& f);
-
-bool intersectPathCircle(const CVec2& c, const CVec2& p, float r0, const CVec2& hd, const CVec2& m1, float r1, float& angle);
-bool intersectPathLine(const CVec2& c, const CVec2& p, float r0, const CVec2& hd, const CVec2& p1, const CVec2& p2, float& angle);
-
-bool intersectPathCapsule(const CVec2& c, const CVec2& p, float r0, const CVec2& hd, const CVec2& a, const CVec2& b, float radius, float& f);
-
-float computeOBBIntersection(const CVec2& a, const CVec2& b, const CVec2& c, const CVec2& d, float size);
-
-#endif
-
diff --git a/homer_mapping/src/OccupancyMap/Math/vec2.h b/homer_mapping/src/OccupancyMap/Math/vec2.h
deleted file mode 100644
index 39a72c8e..00000000
--- a/homer_mapping/src/OccupancyMap/Math/vec2.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- *  vec2.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus, Susanne Maur
- *******************************************************************************/
-
-#include <iostream>
-#include <sstream>
-
-#ifndef VEC2_H
-#define VEC2_H
-
-#include <math.h>
-
-class CVec2
-{
-  public:
-
-    inline CVec2()
-    {
-      m_X = 0; m_Y = 0;
-    }
-
-    inline CVec2 ( double x, double y )
-    {
-      m_X=x; m_Y=y;
-    }
-
-    inline CVec2 ( const CVec2& vec )
-    {
-      m_X=vec.x(); m_Y=vec.y();
-    }
-
-    inline CVec2 operator+ ( const CVec2& vVector ) const
-    {
-      return CVec2 ( vVector[0] + m_X, vVector[1] + m_Y );
-    };
-
-    inline CVec2 operator- ( const CVec2& vVector ) const
-    {
-      return CVec2 ( m_X - vVector[0], m_Y - vVector[1] );
-    };
-    
-    inline CVec2 operator- ( ) const
-    {
-        return CVec2 ( - m_X, - m_Y );
-    };
-
-    inline CVec2 operator* ( double num ) const
-    {
-      return CVec2 ( m_X * num, m_Y * num );
-    };
-
-    inline double operator* ( const CVec2& vVector ) const
-    {
-      return m_X*vVector[0]+m_Y*vVector[1];
-    }
-
-    inline CVec2 operator/ ( double num ) const
-    {
-      return CVec2 ( m_X / num, m_Y / num );
-    }
-
-    inline void set ( double fx, double fy )
-    {
-      m_X=fx; m_Y=fy;
-    }
-
-    inline double x() const
-    {
-      return m_X;
-    }
-
-    inline double y() const
-    {
-      return m_Y;
-    }
-
-    inline double magnitude() const
-    {
-      double sumOfSquares = m_X*m_X + m_Y*m_Y;
-      return sqrt ( sumOfSquares );
-    }
-
-    inline double operator [] ( unsigned int i ) const
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline double& operator [] ( unsigned int i )
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline CVec2& operator/= ( double num )
-    {
-      double inv=1.0f/num;
-      m_X*=inv;
-      m_Y*=inv;
-      return ( *this );
-    }
-
-    inline CVec2& operator*= ( double num )
-    {
-      m_X*=num;
-      m_Y*=num;
-      return ( *this );
-    }
-
-    inline CVec2& normalize()
-    {
-      return ( *this/=magnitude() );
-    }
-
-    inline CVec2& makePerp()
-    {
-      double xn=m_X;
-      m_X=-m_Y;
-      m_Y=xn;
-      return *this;
-    }
-
-    inline CVec2 getNormal() const
-    {
-      return CVec2 ( m_Y, -m_X ); //?
-    }
-
-    inline CVec2 getNormalized() const
-    {
-      return ( *this ) /magnitude();
-    }
-
-    inline double sqr() const
-    {
-      return ( *this ) * ( *this );
-    }
-
-    inline double dot ( const CVec2& vec ) const
-    {
-      return ( m_X*vec[0] ) + ( m_Y*vec[1] );
-    }
-
-    inline double getAngle ( const CVec2& vec ) const
-    {
-      return acos ( dot ( vec ) / ( magnitude() *vec.magnitude() ) );
-    }
-
-    /// @param angle Rotation angle in radiants
-    inline CVec2 rotate ( float angle ) const
-    {
-      double xRot =  m_X*cos ( angle ) - m_Y*sin ( angle );
-      double yRot =  m_X*sin ( angle ) + m_Y*cos ( angle );
-      return CVec2 ( xRot, yRot );
-    }
-
-    inline bool equal ( CVec2 vec ) const
-    {
-      return ( m_X==vec.x() && m_Y==vec.y() );
-    }
-
-    /**
-     * Returns the string representation of the vector.
-     * @return string representation of the point.
-     */
-    inline std::string toString() const
-    {
-      std::ostringstream str;
-      str << m_X << " " << m_Y;
-      return str.str();
-    }
-
-  protected:
-    double m_X, m_Y;
-};
-
-inline CVec2 operator* ( double f, const CVec2& v )
-{
-  return v*f;
-}
-
-inline CVec2 normalize ( const CVec2& v )
-{
-  return v/v.magnitude();
-}
-
-#endif
diff --git a/homer_mapping/src/OccupancyMap/Math/vec3_inl.h b/homer_mapping/src/OccupancyMap/Math/vec3_inl.h
deleted file mode 100644
index 533eabbb..00000000
--- a/homer_mapping/src/OccupancyMap/Math/vec3_inl.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/*******************************************************************************
- *  vec3_inl.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#define THIS Vector3D
-
-#include <sstream>
-
-//----------------------------------------------------------------------------------------------------------
-inline THIS::THIS()
-{}
-//----------------------------------------------------------------------------------------------------------
-inline THIS::THIS ( float x, float y, float z )
-{
-  m_X = x; m_Y = y; m_Z = z;
-};
-//----------------------------------------------------------------------------------------------------------
-inline THIS::THIS ( const Vector3D& v2 )
-{
-  m_X=v2[0];
-  m_Y=v2[1];
-  m_Z=v2[2];
-};
-//----------------------------------------------------------------------------------------------------------
-inline THIS::THIS ( const CVec2& v, float z)
-{
-  m_X=v[0];
-  m_Y=v[1];
-  m_Z=z;
-}
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator+ ( const Vector3D& vVector ) const
-{
-  return Vector3D ( vVector[0] + m_X, vVector[1] + m_Y, vVector[2] + m_Z );
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator-() const
-{
-  return Vector3D ( -m_X,-m_Y,-m_Z );
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator+() const
-{
-  return Vector3D ( m_X,m_Y,m_Z );
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator- ( const Vector3D& vVector ) const
-{
-  return Vector3D ( m_X-vVector[0],m_Y-vVector[1],m_Z-vVector[2] );
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator* ( const float num ) const
-{
-  return Vector3D ( m_X * num, m_Y * num, m_Z * num );
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D& THIS::operator*= ( const float num )
-{
-  m_X*=num; m_Y*=num; m_Z*=num;
-  return *this;
-}
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D& THIS::operator/= ( const float num )
-{
-  m_X/=num; m_Y/=num; m_Z/=num;
-  return *this;
-}
-//----------------------------------------------------------------------------------------------------------
-inline float THIS::operator* ( const Vector3D& vVector ) const
-{
-  return vVector[0]*m_X+vVector[1]*m_Y+vVector[2]*m_Z;
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D& THIS::operator+= ( const Vector3D& vVector )
-{
-  m_X+=vVector[0];
-  m_Y+=vVector[1];
-  m_Z+=vVector[2];
-  return *this;
-}
-//----------------------------------------------------------------------------------------------------------
-inline bool THIS::operator < ( const Vector3D& vVec ) const
-{
-  if ( m_X<vVec[0] ) return true;
-  if ( m_X>vVec[0] ) return false;
-  if ( m_Y<vVec[1] ) return true;
-  if ( m_Y>vVec[1] ) return false;
-  return ( m_Z<vVec[2] );
-}
-//----------------------------------------------------------------------------------------------------------
-inline bool THIS::operator > ( const Vector3D& vVec ) const
-{
-  if ( m_X<vVec[0] ) return false;
-  if ( m_X>vVec[0] ) return true;
-  if ( m_Y<vVec[1] ) return false;
-  if ( m_Y>vVec[1] ) return true;
-  return ( m_Z>vVec[2] );
-}
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D& THIS::operator-= ( const Vector3D& vVector )
-{
-  m_X-=vVector[0];
-  m_Y-=vVector[1];
-  m_Z-=vVector[2];
-  return *this;
-}
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator^ ( const Vector3D& vVector2 ) const
-{
-  Vector3D vNormal;
-
-  // Calculate the cross product with the non communitive equation
-  vNormal[0] = ( ( m_Y * vVector2[2] ) - ( m_Z * vVector2[1] ) );
-  vNormal[1] = ( ( m_Z * vVector2[0] ) - ( m_X * vVector2[2] ) );
-  vNormal[2] = ( ( m_X * vVector2[1] ) - ( m_Y * vVector2[0] ) );
-
-  // Return the cross product
-  return vNormal;
-};
-//----------------------------------------------------------------------------------------------------------
-inline bool THIS::operator== ( const Vector3D& v1 ) const
-{
-  // this is evil!
-  assert ( 0 );
-
-  static const float EPS=1.0f/100.0f;
-  if ( fabs ( v1[0]-m_X ) >EPS ) return false;
-  if ( fabs ( v1[1]-m_Y ) >EPS ) return false;
-  if ( fabs ( v1[2]-m_Z ) >EPS ) return false;
-
-  return true;
-};
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D THIS::operator/ ( float num ) const
-{
-  return Vector3D ( m_X / num, m_Y / num, m_Z / num );
-};
-//----------------------------------------------------------------------------------------------------------
-inline float THIS::operator [] ( const unsigned int i ) const
-{
-  return ( ( float* ) this ) [i];
-}
-//----------------------------------------------------------------------------------------------------------
-inline float& THIS::operator [] ( const unsigned int i )
-{
-  return ( ( float* ) this ) [i];
-}
-//----------------------------------------------------------------------------------------------------------
-inline void THIS::set ( float fx, float fy, float fz )
-{
-  m_X=fx; m_Y=fy; m_Z=fz;
-}
-//----------------------------------------------------------------------------------------------------------
-inline void THIS::lerp ( const Vector3D& v1, const Vector3D& v2,float f )
-{
-  ( *this ) =v1* ( 1-f ) +v2*f;
-}
-//----------------------------------------------------------------------------------------------------------
-inline float THIS::magnitude() const
-{
-  return sqrtf ( m_X*m_X+m_Y*m_Y+m_Z*m_Z );
-}
-//----------------------------------------------------------------------------------------------------------
-//----------------------------------------------------------------------------------------------------------
-//----------------------------------------------------------------------------------------------------------
-inline Vector3D operator* ( const float n,const Vector3D& v )
-{
-  return Vector3D ( v[0]*n,v[1]*n,v[2]*n );
-};
-//----------------------------------------------------------------------------------------------------------
-
-
-#undef THIS
-
diff --git a/homer_mapping/src/OccupancyMap/OccupancyMap.cpp b/homer_mapping/src/OccupancyMap/OccupancyMap.cpp
deleted file mode 100644
index 811d4f31..00000000
--- a/homer_mapping/src/OccupancyMap/OccupancyMap.cpp
+++ /dev/null
@@ -1,931 +0,0 @@
-#include "OccupancyMap.h"
-
-#include "Math/Math.h"
-
-#include <cmath>
-#include <vector>
-#include <fstream>
-#include <sstream>
-#include <QImage>
-
-#include <Eigen/Geometry>
-
-#include <ros/ros.h>
-#include <tf/transform_listener.h>
-
-#include "homer_mapnav_msgs/ModifyMap.h"
-#include "tools/loadRosConfig.h"
-#include "tools/tools.h"
-
-//uncomment this to get extended information on the tracer
-//#define TRACER_OUTPUT
-
-using namespace std;
-
-const float UNKNOWN_LIKELIHOOD = 0.3;
-
-// Flags of current changes //
-const char NO_CHANGE = 0;
-const char OCCUPIED = 1;
-const char FREE = 2;
-//the safety border around occupied pixels which is left unchanged
-const char SAFETY_BORDER = 3;
-///////////////////////////////
-
-//assumed laser measure count for loaded maps
-const int LOADED_MEASURECOUNT = 10;
-
-
-OccupancyMap::OccupancyMap()
-{
-  initMembers();
-}
-
-OccupancyMap::OccupancyMap(float *&occupancyProbability, geometry_msgs::Pose origin, float resolution, int pixelSize, Box2D<int> exploredRegion)
-{
-    initMembers();
-
-
-    m_Origin = origin;
-    m_Resolution = resolution;
-    m_PixelSize = pixelSize;
-    m_ByteSize = pixelSize * pixelSize;
-    m_ExploredRegion = exploredRegion;
-    m_ChangedRegion = exploredRegion;
-
-    if ( m_OccupancyProbability )
-    {
-      delete[] m_OccupancyProbability;
-    }
-    m_OccupancyProbability = occupancyProbability;
-    for(unsigned i = 0; i < m_ByteSize; i++)
-    {
-        if(m_OccupancyProbability[i] != 0.5)
-        {
-            m_MeasurementCount[i] = LOADED_MEASURECOUNT;
-            m_OccupancyCount[i] = m_OccupancyProbability[i] * (float)LOADED_MEASURECOUNT;
-        }
-    }
-}
-
-
-OccupancyMap::OccupancyMap ( const OccupancyMap& occupancyMap )
-{
-  m_OccupancyProbability = 0;
-  m_MeasurementCount = 0;
-  m_OccupancyCount = 0;
-  m_CurrentChanges = 0;
-  m_InaccessibleCount = 0;
-  m_HighSensitive = 0;
-  m_LaserMaxRange = 0;
-  m_LaserMinRange = 0;
-
-  *this = occupancyMap;
-}
-
-OccupancyMap::~OccupancyMap()
-{
-  cleanUp();
-}
-
-void OccupancyMap::initMembers()
-{
-  float mapSize;
-  loadConfigValue("/homer_mapping/size", mapSize);
-  loadConfigValue("/homer_mapping/resolution", m_Resolution);
-
-  //add one safety pixel
-  m_PixelSize = mapSize / m_Resolution + 1;
-  m_ByteSize = m_PixelSize * m_PixelSize;
-
-  m_Origin.position.x = -m_PixelSize*m_Resolution/2;
-  m_Origin.position.y = -m_PixelSize*m_Resolution/2;
-  m_Origin.orientation.w = 1.0;
-  m_Origin.orientation.x = 0.0;
-  m_Origin.orientation.y = 0.0;
-  m_Origin.orientation.z = 0.0;
-
-  loadConfigValue("/homer_mapping/backside_checking", m_BacksideChecking);
-  loadConfigValue("/homer_mapping/obstacle_borders", m_ObstacleBorders);
-  loadConfigValue("/homer_mapping/measure_sampling_step", m_MeasureSamplingStep);
-  loadConfigValue("/homer_mapping/laser_scanner/free_reading_distance", m_FreeReadingDistance);
-
-  m_OccupancyProbability = new float[m_ByteSize];
-  m_MeasurementCount = new unsigned short[m_ByteSize];
-  m_OccupancyCount = new unsigned short[m_ByteSize];
-  m_CurrentChanges = new unsigned char[m_ByteSize];
-  m_InaccessibleCount = new unsigned char[m_ByteSize];
-  m_HighSensitive = new unsigned short[m_ByteSize];
-  for ( unsigned i=0; i<m_ByteSize; i++ )
-  {
-    m_OccupancyProbability[i]=UNKNOWN_LIKELIHOOD;
-    m_OccupancyCount[i]=0;
-    m_MeasurementCount[i]=0;
-    m_CurrentChanges[i]=NO_CHANGE;
-    m_InaccessibleCount[i]=0;
-    m_HighSensitive[i] = 0;
-  }
-
-  m_ExploredRegion=Box2D<int> ( m_PixelSize/2.1, m_PixelSize/2.1, m_PixelSize/1.9, m_PixelSize/1.9 );
-  maximizeChangedRegion();
-}
-
-
-OccupancyMap& OccupancyMap::operator= ( const OccupancyMap & occupancyMap )
-{
-  // free allocated memory
-  cleanUp();
-
-  m_Resolution = occupancyMap.m_Resolution;
-  m_ExploredRegion =  occupancyMap.m_ExploredRegion;
-  m_PixelSize = occupancyMap.m_PixelSize;
-  m_ByteSize = occupancyMap.m_ByteSize;
-
-  loadConfigValue("/homer_mapping/backside_checking", m_BacksideChecking);
-
-  // re-allocate all arrays
-  m_OccupancyProbability = new float[m_ByteSize];
-  m_MeasurementCount = new unsigned short[m_ByteSize];
-  m_OccupancyCount = new unsigned short[m_ByteSize];
-  m_CurrentChanges = new unsigned char[m_ByteSize];
-  m_InaccessibleCount = new unsigned char[m_ByteSize];
-  m_HighSensitive = new unsigned short[m_ByteSize];
-
-  // copy array data
-  memcpy ( m_OccupancyProbability, occupancyMap.m_OccupancyProbability, m_ByteSize * sizeof ( *m_OccupancyProbability ) );
-  memcpy ( m_MeasurementCount, occupancyMap.m_MeasurementCount, m_ByteSize * sizeof ( *m_MeasurementCount ) );
-  memcpy ( m_OccupancyCount, occupancyMap.m_OccupancyCount, m_ByteSize * sizeof ( *m_OccupancyCount ) );
-  memcpy ( m_CurrentChanges, occupancyMap.m_CurrentChanges, m_ByteSize * sizeof ( *m_CurrentChanges ) );
-  memcpy ( m_InaccessibleCount, occupancyMap.m_InaccessibleCount, m_ByteSize * sizeof ( *m_InaccessibleCount ) );
-  memcpy ( m_HighSensitive, occupancyMap.m_HighSensitive, m_ByteSize * sizeof ( *m_HighSensitive) );
-
-
-  return *this;
-}
-
-int OccupancyMap::width() const
-{
-  return m_PixelSize;
-}
-
-int OccupancyMap::height() const
-{
-  return m_PixelSize;
-}
-
-float OccupancyMap::getOccupancyProbability ( Eigen::Vector2i p )
-{
-  unsigned offset = m_PixelSize * p.y() + p.x();
-  if ( offset > unsigned ( m_ByteSize ) )
-  {
-    return UNKNOWN_LIKELIHOOD;
-  }
-  return m_OccupancyProbability[ offset ];
-}
-
-void OccupancyMap::resetHighSensitive()
-{
-	ROS_INFO_STREAM("High sensitive Areas reseted");
-	m_reset_high = true;
-}
-
-void OccupancyMap::computeOccupancyProbabilities()
-{
-  for ( int y = m_ChangedRegion.minY(); y <= m_ChangedRegion.maxY(); y++ )
-  {
-    int yOffset = m_PixelSize * y;
-    for ( int x = m_ChangedRegion.minX(); x <= m_ChangedRegion.maxX(); x++ )
-    {
-      int i = x + yOffset;
-      if ( m_MeasurementCount[i] > 0 )
-      {
-        m_OccupancyProbability[i] = m_OccupancyCount[i] / static_cast<float>  	( m_MeasurementCount[i] );
-		if (m_HighSensitive[i] == 1)
-		{
-		  if(m_reset_high == true)
-		  {
-		  	m_OccupancyCount[i] = 0;
-		  	m_OccupancyProbability[i] = 0;
-		  }
-		  if(m_MeasurementCount[i] > 20 )
-		  {
-		  	m_MeasurementCount[i] = 10; 	
-		  	m_OccupancyCount[i] = 10 * m_OccupancyProbability[i];
-		  }
-		  if(m_OccupancyProbability[i] > 0.3)
-		  {
-		    m_OccupancyProbability[i] =  1 ; 
-		  }
-		}      
-      }
-      else
-      {
-        m_OccupancyProbability[i] = UNKNOWN_LIKELIHOOD;
-      }
-    }
-  }
-  if(m_reset_high  == true)
-  {
-  	m_reset_high = false;
-  }
-}
-
-void OccupancyMap::insertLaserData ( sensor_msgs::LaserScanConstPtr laserData )
-{
-  markRobotPositionFree();
-
-  m_LaserMaxRange = laserData->range_max;
-  m_LaserMinRange = laserData->range_min;
-  tf::StampedTransform laserTransform;
-  try
-  {
-    m_tfListener.lookupTransform("/base_link", laserData->header.frame_id, ros::Time(0), laserTransform);
-  }
-  catch (tf::TransformException ex) {
-      ROS_ERROR_STREAM(ex.what());
-  }
-
-  m_LaserPos.x = laserTransform.getOrigin().getX();
-  m_LaserPos.y = laserTransform.getOrigin().getY();
-
-  std::vector<RangeMeasurement> ranges;
-  ranges.reserve ( laserData->ranges.size() );
-
-  bool errorFound=false;
-  int lastValidIndex=-1;
-  float lastValidRange=m_FreeReadingDistance;
-
-  RangeMeasurement rangeMeasurement;
-  rangeMeasurement.sensorPos = m_LaserPos;
-  for ( unsigned int i = 0; i < laserData->ranges.size(); i++ )
-  {
-    if ( ( laserData->ranges[i] >= m_LaserMinRange ) && ( laserData->ranges[i] <= m_LaserMaxRange ) )
-    {
-      //if we're at the end of an errorneous segment, interpolate
-      //between last valid point and current point
-      if ( errorFound )
-      {
-        //smaller of the two ranges belonging to end points
-        float range = Math::min ( lastValidRange, laserData->ranges[i] );
-        range -= m_Resolution * 2;
-
-        if ( range < m_FreeReadingDistance )
-        {
-          range = m_FreeReadingDistance;
-        }
-        else
-          if ( range > m_LaserMaxRange*0.8 )
-          {
-            range = m_LaserMaxRange*0.8;
-          }
-
-        //choose smaller range
-        for ( unsigned j=lastValidIndex+1; j<i; j++ )
-        {
-          rangeMeasurement.endPos =  map_tools::laser_range_to_point(range, j, laserData->angle_min, laserData->angle_increment, m_tfListener, laserData->header.frame_id, "/base_link");// laserConf->nativeLaserToRobot ( j, range ); //TODO use tf
-          rangeMeasurement.free = true;
-          ranges.push_back ( rangeMeasurement );
-        }
-      }
-      rangeMeasurement.endPos = map_tools::laser_range_to_point(laserData->ranges[i], i, laserData->angle_min, laserData->angle_increment, m_tfListener, laserData->header.frame_id, "/base_link");
-      rangeMeasurement.free = false;
-      ranges.push_back ( rangeMeasurement );
-
-      errorFound=false;
-      lastValidIndex=i;
-      lastValidRange=laserData->ranges[i];
-    }
-    else
-    {
-      errorFound=true;
-    }
-  }
-
-  if ( errorFound )
-  {
-    for ( unsigned j=lastValidIndex+1; j<laserData->ranges.size(); j++ )
-    {
-      rangeMeasurement.endPos = map_tools::laser_range_to_point(m_FreeReadingDistance, j, laserData->angle_min, laserData->angle_increment, m_tfListener, laserData->header.frame_id, "/base_link"); //
-
-      rangeMeasurement.free = true;
-      ranges.push_back ( rangeMeasurement );
-    }
-  }
-
-  insertRanges ( ranges );
-}
-
-
-void OccupancyMap::insertRanges ( vector<RangeMeasurement> ranges )
-{
-  clearChanges();
-
-  Eigen::Vector2i lastEndPixel;
-
-
-  //paint safety borders
-  if ( m_ObstacleBorders )
-  {
-    for ( unsigned i=0; i<ranges.size(); i++ )
-    {
-      geometry_msgs::Point endPosWorld = map_tools::transformPoint(ranges[i].endPos, m_tfListener, "/base_link", "/map");
-      Eigen::Vector2i endPixel = map_tools::toMapCoords(endPosWorld, m_Origin, m_Resolution);
-
-      for ( int y=endPixel.y()-1; y <= endPixel.y() +1; y++ )
-      {
-        for ( int x=endPixel.x()-1; x <= endPixel.x() +1; x++ )
-        {
-          unsigned offset=x+m_PixelSize*y;
-          if ( offset < unsigned ( m_ByteSize ) )
-          {
-            m_CurrentChanges[ offset ] = SAFETY_BORDER;
-          }
-        }
-      }
-    }
-  }
-  //paint safety ranges
-  for ( unsigned i=0; i<ranges.size(); i++ )
-  {
-      geometry_msgs::Point startPosWorld = map_tools::transformPoint(ranges[i].endPos, m_tfListener, "/base_link", "/map");
-      Eigen::Vector2i startPixel = map_tools::toMapCoords(startPosWorld, m_Origin, m_Resolution);
-    geometry_msgs::Point endPos;
-    endPos.x = ranges[i].endPos.x * 4;
-    endPos.y = ranges[i].endPos.y * 4;
-
-    geometry_msgs::Point endPosWorld = map_tools::transformPoint(endPos, m_tfListener, "/base_link", "/map");
-    Eigen::Vector2i endPixel = map_tools::toMapCoords(endPosWorld, m_Origin, m_Resolution);
-
-
-    if(endPixel.x() < 0) endPixel.x() = 0;
-    if(endPixel.y() < 0) endPixel.y() = 0;
-    if(endPixel.x() >= m_PixelSize) endPixel.x() = m_PixelSize - 1;
-    if(endPixel.y() >= m_PixelSize) endPixel.y() = m_PixelSize - 1;
-
-    drawLine ( m_CurrentChanges, startPixel, endPixel, SAFETY_BORDER );
-  }
-
-  //paint end pixels
-  for ( unsigned i=0; i<ranges.size(); i++ )
-  {
-    if ( !ranges[i].free )
-    {
-      geometry_msgs::Point endPosWorld = map_tools::transformPoint(ranges[i].endPos, m_tfListener, "/base_link", "/map");
-      Eigen::Vector2i endPixel = map_tools::toMapCoords(endPosWorld, m_Origin, m_Resolution);
-
-      if ( endPixel != lastEndPixel )
-      {
-        unsigned offset = endPixel.x() + m_PixelSize * endPixel.y();
-        if ( offset < m_ByteSize )
-        {
-          m_CurrentChanges[ offset ] = ::OCCUPIED;
-        }
-      }
-      lastEndPixel=endPixel;
-      }
-  }
-
-  //paint free ranges
-  for ( unsigned i=0; i<ranges.size(); i++ )
-  {
-      geometry_msgs::Point sensorPosWorld = map_tools::transformPoint(ranges[i].sensorPos, m_tfListener, "/base_link", "/map");
-      geometry_msgs::Point endPosWorld = map_tools::transformPoint(ranges[i].endPos, m_tfListener, "/base_link", "/map");
-      Eigen::Vector2i sensorPixel = map_tools::toMapCoords(sensorPosWorld, m_Origin, m_Resolution);
-    Eigen::Vector2i endPixel = map_tools::toMapCoords(endPosWorld, m_Origin, m_Resolution);
-
-    m_ChangedRegion.enclose ( sensorPixel.x(), sensorPixel.y() );
-    m_ChangedRegion.enclose ( endPixel.x(), endPixel.y() );
-
-    if ( endPixel != lastEndPixel )
-    {
-        drawLine ( m_CurrentChanges, sensorPixel, endPixel, ::FREE );
-    }
-
-    lastEndPixel=endPixel;
-  }
-
-  m_ChangedRegion.clip ( Box2D<int> ( 0,0,m_PixelSize-1,m_PixelSize-1 ) );
-  m_ExploredRegion.enclose ( m_ChangedRegion );
-  applyChanges();
-  computeOccupancyProbabilities();
-}
-
-double OccupancyMap::contrastFromProbability ( int8_t prob )
-{
-  // range from 0..126 (=127 values) and 128..255 (=128 values)
-  double diff = ( ( double ) prob - UNKNOWN );
-  double contrast;
-  if ( prob <= UNKNOWN )
-  {
-    contrast = ( diff / UNKNOWN ); // 0..1
-  }
-  else
-  {
-    contrast = ( diff / ( UNKNOWN+1 ) );  // 0..1
-  }
-  return ( contrast * contrast );
-}
-
-double OccupancyMap::evaluateByContrast()
-{
-  double contrastSum = 0.0;
-  unsigned int contrastCnt = 0;
-
-  for ( int y = m_ExploredRegion.minY(); y <= m_ExploredRegion.maxY(); y++ )
-  {
-    for ( int x = m_ExploredRegion.minX(); x <= m_ExploredRegion.maxX(); x++ )
-    {
-      int i = x + y * m_PixelSize;
-      if ( m_MeasurementCount [i] > 1 )
-      {
-        int prob = m_OccupancyProbability[i] * 100;
-        if ( prob != NOT_SEEN_YET ) // ignore not yet seen cells
-        {
-          contrastSum += contrastFromProbability ( prob );
-          contrastCnt++;
-        }
-      }
-    }
-  }
-  if ( ( contrastCnt ) > 0 )
-  {
-    return ( ( contrastSum / contrastCnt ) * 100 );
-  }
-  return ( 0 );
-}
-
-
-
-vector<MeasurePoint> OccupancyMap::getMeasurePoints (sensor_msgs::LaserScanConstPtr laserData)
-{
-  vector<MeasurePoint> result;
-  result.reserve ( laserData->ranges.size() );
-
-  double minDist = m_MeasureSamplingStep;
-
-  m_LaserMaxRange = laserData->range_max;
-  m_LaserMinRange = laserData->range_min;
-
-  Point2D lastHitPos;
-  Point2D lastUsedHitPos;
-
-  //extract points for measuring
-  for ( unsigned int i=0; i < laserData->ranges.size(); i++ )
-  {
-    if ( laserData->ranges[i] <= m_LaserMaxRange && laserData->ranges[i] >= m_LaserMinRange )
-    {
-        geometry_msgs::Point hitPosMsg = map_tools::laser_range_to_point(laserData->ranges[i], i, laserData->angle_min, laserData->angle_increment, m_tfListener, laserData->header.frame_id, "/base_link"); //laserConf->nativeLaserToRobot ( i, laserData[i] ); //tf
-        Point2D hitPos(hitPosMsg.x, hitPosMsg.y);
-
-      if ( hitPos.distance ( lastUsedHitPos ) >= minDist )
-      {
-        MeasurePoint p;
-        //preserve borders of segments
-        if ( ( i!=0 ) &&
-                ( lastUsedHitPos.distance ( lastHitPos ) > m_Resolution*0.5 ) &&
-                ( hitPos.distance ( lastHitPos ) >= minDist*1.5 ) )
-        {
-          p.hitPos = lastHitPos;
-          p.borderType = RightBorder;
-          result.push_back ( p );
-          p.hitPos = hitPos;
-          p.borderType = LeftBorder;
-          result.push_back ( p );
-          lastUsedHitPos = hitPos;
-        }
-        else
-        {
-          //save current point
-          p.hitPos = hitPos;
-          p.borderType = NoBorder;
-          result.push_back ( p );
-          lastUsedHitPos = hitPos;
-        }
-      }
-      lastHitPos = hitPos;
-    }
-  }
-
-  //the first and last one are border pixels
-  if ( result.size() > 0 )
-  {
-    result[0].borderType = LeftBorder;
-    result[result.size()-1].borderType = RightBorder;
-  }
-
-  //calculate front check points
-  for ( unsigned i=0; i < result.size(); i++ )
-  {
-    CVec2 diff;
-
-    switch ( result[i].borderType )
-    {
-      case NoBorder:
-        diff = result[i-1].hitPos - result[i+1].hitPos;
-        break;
-      case LeftBorder:
-        diff = result[i].hitPos - result[i+1].hitPos;
-        break;
-      case RightBorder:
-        diff = result[i-1].hitPos - result[i].hitPos;
-        break;
-    }
-
-    CVec2 normal = diff.rotate ( Math::Pi * 0.5 );
-    normal.normalize();
-    normal *= m_Resolution * sqrt ( 2.0 ) * 10.0;
-
-    result[i].frontPos = result[i].hitPos + normal;
-  }
-
-  return result;
-}
-
-
-float OccupancyMap::computeScore ( Pose robotPose, std::vector<MeasurePoint> measurePoints )
-{
-  // This is a very simple implementation, using only the end point of the beam.
-  // For every beam the end cell is computed and tested if the cell is occupied.
-  unsigned lastOffset=0;
-  unsigned hitOffset=0;
-  unsigned frontOffset=0;
-  float fittingFactor = 0.0;
-
-  float sinTheta = sin ( robotPose.theta() );
-  float cosTheta = cos ( robotPose.theta() );
-
-  for ( unsigned int i = 0; i < measurePoints.size(); i++ )
-  {
-    //fast variant:
-    float x = cosTheta * measurePoints[i].hitPos.x() - sinTheta * measurePoints[i].hitPos.y() + robotPose.x();
-    float y = sinTheta * measurePoints[i].hitPos.x() + cosTheta * measurePoints[i].hitPos.y() + robotPose.y();
-    geometry_msgs::Point hitPos;
-    hitPos.x = x;
-    hitPos.y = y;
-
-    Eigen::Vector2i hitPixel = map_tools::toMapCoords(hitPos, m_Origin, m_Resolution);
-    hitOffset = hitPixel.x() + m_PixelSize*hitPixel.y();
-
-    //avoid multiple measuring of same pixel or unknown pixel
-    if ( ( hitOffset == lastOffset ) || ( hitOffset >= unsigned ( m_ByteSize ) ) || ( m_MeasurementCount[hitOffset] == 0 ) )
-    {
-      continue;
-    }
-
-    if ( m_BacksideChecking )
-    {
-      //avoid matching of back and front pixels of obstacles
-      x = cosTheta * measurePoints[i].frontPos.x() - sinTheta * measurePoints[i].frontPos.y() + robotPose.x();
-      y = sinTheta * measurePoints[i].frontPos.x() + cosTheta * measurePoints[i].frontPos.y() + robotPose.y();
-      geometry_msgs::Point frontPos;
-      frontPos.x = x;
-      frontPos.y = y;
-
-      Eigen::Vector2i frontPixel = map_tools::toMapCoords(frontPos, m_Origin, m_Resolution);
-      frontOffset = frontPixel.x() + m_PixelSize*frontPixel.y();
-
-      if ( ( frontOffset >= unsigned ( m_ByteSize ) ) || ( m_MeasurementCount[frontOffset] == 0 ) )
-      {
-        continue;
-      }
-    }
-
-    lastOffset=hitOffset;
-    //fittingFactor += m_SmoothOccupancyProbability[ offset ];
-    fittingFactor += m_OccupancyProbability[ hitOffset ];
-  }
-  return fittingFactor;
-}
-
-
-template<class DataT>
-void OccupancyMap::drawLine ( DataT* data, Eigen::Vector2i& startPixel, Eigen::Vector2i& endPixel, char value )
-{
-
-  //bresenham algorithm
-  int xstart = startPixel.x();
-  int ystart = startPixel.y();
-  int xend = endPixel.x();
-  int yend = endPixel.y();
-
-  int x, y, t, dist, xerr, yerr, dx, dy, incx, incy;
-  // compute distances
-  dx = xend - xstart;
-  dy = yend - ystart;
-
-  // compute increment
-  if ( dx < 0 )
-  {
-    incx = -1;
-    dx = -dx;
-  }
-  else
-  {
-    incx = dx ? 1 : 0;
-  }
-
-  if ( dy < 0 )
-  {
-    incy = -1;
-    dy = -dy;
-  }
-  else
-  {
-    incy = dy ? 1 : 0;
-  }
-
-  // which distance is greater?
-  dist = ( dx > dy ) ? dx : dy;
-  // initializing
-  x = xstart;
-  y = ystart;
-  xerr = dx;
-  yerr = dy;
-
-  // compute cells
-  for ( t = 0; t < dist; t++ )
-  {
-    int index = x + m_PixelSize * y;
-    // set flag to free if no flag is set
-    // (do not overwrite occupied cells)
-    if(index < 0) continue;
-    if ( data[index] == NO_CHANGE )
-    {
-      data[index] = value;
-    }
-/*    if ( data[index] == OCCUPIED || data[index] == SAFETY_BORDER )
-    {
-      return;
-    }*/
-    xerr += dx;
-    yerr += dy;
-    if ( xerr > dist )
-    {
-      xerr -= dist;
-      x += incx;
-    }
-    if ( yerr > dist )
-    {
-      yerr -= dist;
-      y += incy;
-    }
-  }
-}
-
-
-void OccupancyMap::applyChanges()
-{
-  for ( int y = m_ChangedRegion.minY(); y <= m_ChangedRegion.maxY(); y++ )
-  {
-    int yOffset = m_PixelSize * y;
-    for ( int x = m_ChangedRegion.minX(); x <= m_ChangedRegion.maxX(); x++ )
-    {
-      int i = x + yOffset;
-      if ( ( m_CurrentChanges[i] == ::FREE || m_CurrentChanges[i] == ::OCCUPIED ) && m_MeasurementCount[i] < SHRT_MAX )
-      {
-        m_MeasurementCount[i]++;
-      }
-      if ( m_CurrentChanges[i] == ::OCCUPIED && m_OccupancyCount[i] < USHRT_MAX )
-      {
-        m_OccupancyCount[i]++;
-      }
-    }
-  }
-}
-
-void OccupancyMap::clearChanges()
-{
-  m_ChangedRegion.expand ( 2 );
-  m_ChangedRegion.clip ( Box2D<int> ( 0,0,m_PixelSize-1,m_PixelSize-1 ) );
-  for ( int y = m_ChangedRegion.minY(); y <= m_ChangedRegion.maxY(); y++ )
-  {
-    int yOffset = m_PixelSize * y;
-    for ( int x = m_ChangedRegion.minX(); x <= m_ChangedRegion.maxX(); x++ )
-    {
-      int i = x + yOffset;
-      m_CurrentChanges[i] = NO_CHANGE;
-    }
-  }
-  m_ChangedRegion=Box2D<int> ( m_PixelSize - 1, m_PixelSize - 1, 0, 0 );
-}
-
-void OccupancyMap::incrementMeasurementCount ( Eigen::Vector2i p )
-{
-  unsigned index = p.x() + m_PixelSize * p.y();
-  if ( index < m_ByteSize )
-  {
-    if ( m_CurrentChanges[index] == NO_CHANGE && m_MeasurementCount[index] < USHRT_MAX )
-    {
-      m_CurrentChanges[index] = ::FREE;
-      m_MeasurementCount[index]++;
-    }
-  }
-  else
-  {
-    ROS_ERROR( "Index out of bounds: x = %d, y = %d", p.x(), p.y() );
-  }
-}
-
-void OccupancyMap::incrementOccupancyCount ( Eigen::Vector2i p )
-{
-  int index = p.x() + m_PixelSize * p.y();
-  if ( ( m_CurrentChanges[index] == NO_CHANGE || m_CurrentChanges[index] == ::FREE ) && m_MeasurementCount[index] < USHRT_MAX )
-  {
-    m_CurrentChanges[index] = ::OCCUPIED;
-    m_OccupancyCount[index]++;
-  }
-}
-
-void OccupancyMap::scaleDownCounts ( int maxCount )
-{
-  clearChanges();
-  if ( maxCount <= 0 )
-  {
-    ROS_WARN("WARNING: argument maxCount is choosen to small, resetting map.");
-    memset ( m_MeasurementCount, 0, m_ByteSize );
-    memset ( m_OccupancyCount, 0, m_ByteSize );
-    memset ( m_InaccessibleCount, 0, m_ByteSize );
-  }
-  else
-  {
-    for ( unsigned i = 0; i < m_ByteSize; i++ )
-    {
-      int scalingFactor = m_MeasurementCount[i] / maxCount;
-      if ( scalingFactor != 0 )
-      {
-        m_MeasurementCount[i] /= scalingFactor;
-        m_OccupancyCount[i] /= scalingFactor;
-        m_InaccessibleCount[i] /= scalingFactor;
-      }
-      if ( m_InaccessibleCount[i] > maxCount )
-      {
-        m_InaccessibleCount[i] = maxCount;
-      }
-    }
-  }
-  maximizeChangedRegion();
-  applyChanges();
-  computeOccupancyProbabilities();
-}
-
-
-void OccupancyMap::markRobotPositionFree()
-{
-  geometry_msgs::Point point;
-  point.x = 0;
-  point.y = 0;
-  point.z = 0;
-  geometry_msgs::Point endPosWorld = map_tools::transformPoint(point, m_tfListener, "/base_link", "/map");
-  Eigen::Vector2i robotPixel = map_tools::toMapCoords(endPosWorld, m_Origin, m_Resolution);
-
-  int width = 0.3 / m_Resolution;
-  for ( int i = robotPixel.y() - width; i <= robotPixel.y() + width; i++ )
-  {
-    for ( int j = robotPixel.x() - width; j <= robotPixel.x() + width; j++ )
-    {
-      incrementMeasurementCount ( Eigen::Vector2i ( i, j ) );
-    }
-  }
-  Box2D<int> robotBox ( robotPixel.x()-width, robotPixel.y()-width, robotPixel.x() +width, robotPixel.y() +width );
-  m_ChangedRegion.enclose ( robotBox );
-  m_ExploredRegion.enclose ( robotBox );
-}
-
-
-QImage OccupancyMap::getProbabilityQImage ( int trancparencyThreshold, bool showInaccessible ) const
-{
-  QImage retImage ( m_PixelSize, m_PixelSize, QImage::Format_RGB32 );
-  for ( int y = 0; y < m_PixelSize; y++ )
-  {
-    for ( int x = 0; x < m_PixelSize; x++ )
-    {
-      int index = x + y * m_PixelSize;
-      int value = UNKNOWN;
-      if ( m_MeasurementCount[index] > 0 )
-      {
-        value = static_cast<int> ( ( 1.0 - m_OccupancyProbability[index] ) * 255 );
-        if ( m_MeasurementCount[index] < trancparencyThreshold )
-        {
-          value = static_cast<int> ( ( 0.75 + 0.025 * m_MeasurementCount[index] ) * ( 1.0 - m_OccupancyProbability[index] ) * 255 );
-        }
-      }
-      if ( showInaccessible && m_InaccessibleCount[index] >= 2 )
-      {
-        value = 0;
-      }
-      retImage.setPixel ( x, y, qRgb ( value, value, value ) );
-    }
-  }
-  return retImage;
-}
-
-void OccupancyMap::getOccupancyProbabilityImage ( vector<int8_t>& data, int& width, int& height, float& resolution )
-{
-  width = m_PixelSize;
-  height = m_PixelSize;
-  resolution = m_Resolution;
-  data.resize(m_PixelSize * m_PixelSize);
-  std::fill(data.begin(), data.end(), (int8_t)NOT_SEEN_YET); //note: linker error without strange cast from int8_t to int8_t
-  for ( int y = m_ExploredRegion.minY(); y <= m_ExploredRegion.maxY(); y++ )
-  {
-    int yOffset = m_PixelSize * y;
-    for ( int x = m_ExploredRegion.minX(); x <= m_ExploredRegion.maxX(); x++ )
-    {
-      int i = x + yOffset;
-      if ( m_MeasurementCount[i] < 1 )
-      {
-        continue;
-      }
-      // set inaccessible points to black
-      if ( m_InaccessibleCount[i] >= 2 )
-      {
-        data[i] = 99;
-        continue;
-      }
-      if(m_OccupancyProbability[i] == UNKNOWN_LIKELIHOOD)
-      {
-          data[i] = NOT_SEEN_YET;
-      }
-      else
-      {
-        data[i] = (int)(m_OccupancyProbability[i] * 99); //TODO maybe - 2 (or *0.99 or smth)
-      }
-    }
-  }
-}
-
-void OccupancyMap::maximizeChangedRegion()
-{
-  m_ChangedRegion=m_ExploredRegion;
-}
-
-void OccupancyMap::applyMasking(const nav_msgs::OccupancyGrid::ConstPtr &msg)
-{
-    if(msg->data.size() != m_ByteSize)
-    {
-        ROS_ERROR_STREAM("Size Mismatch between SLAM map (" << m_ByteSize << ") and masking map (" << msg->data.size() << ")");
-        return;
-    }
-    for(size_t y = 0; y < msg->info.height; y++)
-    {
-        int yOffset = msg->info.width * y;
-        for(size_t x = 0; x < msg->info.width; x++)
-        {
-            int i = yOffset + x;
-
-            switch(msg->data[i])
-            {
-            case homer_mapnav_msgs::ModifyMap::BLOCKED:
-            case homer_mapnav_msgs::ModifyMap::OBSTACLE:
-                //increase measure count of cells which were not yet visible to be able to modify unknown areas
-                if(m_MeasurementCount[i] == 0)
-                    m_MeasurementCount[i] = 10;
-
-                m_OccupancyCount[i] = m_MeasurementCount[i];
-                m_OccupancyProbability[i] = 1.0;
-                m_ExploredRegion.enclose(x, y);
-                break;
-            case homer_mapnav_msgs::ModifyMap::FREE:
-                //see comment above
-                if(m_MeasurementCount[i] == 0)
-                    m_MeasurementCount[i] = 10;
-
-                m_OccupancyCount[i] = 0;
-                m_OccupancyProbability[i] = 0.0;
-                m_ExploredRegion.enclose(x, y);
-                break;
-            case homer_mapnav_msgs::ModifyMap::HIGH_SENSITIV:
-            	m_HighSensitive[i] = 1;
-                break;
-            }
-        }
-    }
-}
-
-void OccupancyMap::cleanUp()
-{
-  if ( m_OccupancyProbability )
-  {
-    delete[] m_OccupancyProbability;
-  }
-  if ( m_MeasurementCount )
-  {
-    delete[] m_MeasurementCount;
-  }
-  if ( m_OccupancyCount )
-  {
-    delete[] m_OccupancyCount;
-  }
-  if ( m_CurrentChanges )
-  {
-    delete[] m_CurrentChanges;
-  }
-  if ( m_InaccessibleCount )
-  {
-    delete[] m_InaccessibleCount;
-  }
-  if ( m_HighSensitive ) 
-  {
-    delete[] m_HighSensitive;
-  }
-}
diff --git a/homer_mapping/src/OccupancyMap/OccupancyMap.h b/homer_mapping/src/OccupancyMap/OccupancyMap.h
deleted file mode 100644
index 718b2dab..00000000
--- a/homer_mapping/src/OccupancyMap/OccupancyMap.h
+++ /dev/null
@@ -1,379 +0,0 @@
-#ifndef OCCUPANCYMAP_H
-#define OCCUPANCYMAP_H
-
-#include <vector>
-#include <list>
-#include <string>
-#include <iostream>
-
-#include <Eigen/Geometry>
-
-#include "Math/Pose.h"
-#include "Math/Point2D.h"
-#include "Math/Box2D.h"
-
-#include "nav_msgs/OccupancyGrid.h"
-#include <tf/transform_listener.h>
-
-#include <sensor_msgs/LaserScan.h>
-
-class QImage;
-
-using namespace std;
-
-/**
- * Structure to store the start and end point of each laser range in the current scan
- * @param sensorPos position of the laser in the current scan (in base_link frame)
- * @param endPos position of the end point of the laser frame in the current scan (in base_link frame)
- * @param free indicates if the laser range hit an obstacle (false) or not (true)
- */
-struct RangeMeasurement
-{
-  geometry_msgs::Point sensorPos;
-  geometry_msgs::Point endPos;
-  bool free;
-};
-
-/**
- * Used in struct MeasurePoint to specify if a measurement point is at the border of a scan segment
- */
-enum BorderType
-{
-  NoBorder,
-  LeftBorder,
-  RightBorder
-};
-
-/**
- * Structure to store a measurement point for computeLaserScanProbability()
- * @param hitPos Position of measured obstacle (robot coordinates)
- * @param frontPos Position to check for NOT_KNOWN terrain
- *                   This is needed to assure that front- and backside of obstacles can be distinguished
- * @param border specifies if the measurement point is at the border of a scan segment
- */
-struct MeasurePoint
-{
-  Point2D hitPos;
-  Point2D frontPos;
-  BorderType borderType;
-};
-
-/**
- * @class OccupancyMap
- *
- * @author Malte Knauf, Stephan Wirth, Susanne Maur (RX), David Gossow (RX), Susanne Thierfelder (R16)
- *
- * @brief This class holds and manages an occupancy map.
- *
- * An occupancy map is a map where free space and occupied space are marked. This map stores values
- * for free and occupied space in an (2D-)unsigned char array. This array can be seen as a graylevel image.
- * The darker a cell, the higher the probability that this cell is occupied by an obstacle.
- * The size of the map and the size of one cell can be defined in the setup file with the values
- * MAP_SIZE and MAP_CELL_SIZE. The origin of the coordinate system of the map is the center of the array.
- * The x-axis is heading front, the y-axis points to the left (like the robot's coordinate system).
- * The mapping data has to be inserted via the method insertLaserData().
- */
-class OccupancyMap {
-
-  public:
-    static const int8_t INACCESSIBLE = 100;
-    static const int8_t OBSTACLE = 99;
-    static const int8_t OCCUPIED = 98;
-    static const int8_t UNKNOWN = 50;
-    static const int8_t NOT_SEEN_YET = -1;
-    static const int8_t FREE = 0;
-
-    /**
-     * The default constructor calls initMembers().
-     */
-    OccupancyMap();
-
-    /**
-     * Constructor for a loaded map.
-     */
-    OccupancyMap(float*& occupancyProbability, geometry_msgs::Pose origin, float resolution, int pixelSize, Box2D<int> exploredRegion);
-
-    /**
-     * Copy constructor, copies all members inclusive the arrays that lie behind the pointers.
-     * @param occupancyMap Source for copying
-     */
-    OccupancyMap(const OccupancyMap& occupancyMap);
-
-    /**
-     * Method to init all members with default values from the configuration file. All arrays are initialized.
-     */
-    void initMembers();
-
-    /**
-     * Assignment operator, copies all members (deep copy!)
-     * @param source Source to copy from
-     * @return Reference to copied OccupancyMap
-     */
-    OccupancyMap& operator=(const OccupancyMap& source);
-
-    /**
-     * Deletes all dynamically allocated memory.
-     */
-    ~OccupancyMap();
-
-    /*
-    /**
-     * @return The resolution of the map in m.
-     */
-//    int resolution() const;
-
-    geometry_msgs::Pose origin() const;
-
-    /**
-     * @return Width of the map.
-     */
-    int width() const;
-
-    /**
-     * @return Height of the map.
-     */
-    int height() const;
-    
-    /**
-     * This method is used to reset all HighSensitive areas
-     */
-    void resetHighSensitive();
-
-    /**
-     * @return Probability of pixel p being occupied.
-     */
-    float getOccupancyProbability(Eigen::Vector2i p);
-
-    /**
-     * @brief This function inserts the data of a laserscan into the map.
-     *
-     * With the given data, start and end cells of a laser beam are computed and given to the
-     * method markLineFree().
-     * If the measurement is smaller than VALID_MAX_RANGE, markOccupied() is called for the endpoint.
-     * @param laserData The laser data msg.
-     */
-    void insertLaserData( sensor_msgs::LaserScanConstPtr laserData );
-
-    void insertRanges( vector<RangeMeasurement> ranges );
-
-    /**
-     * @brief gives a list specially processed coordinates to be used for computeLaserScanProbability
-     */
-    std::vector<MeasurePoint> getMeasurePoints( sensor_msgs::LaserScanConstPtr laserData );
-
-    /**
-     * This method computes a score that describes how good the given hypothesis matches with the map
-     * @param robotPose The pose of the robot
-     * @return The "fitting factor". The higher the factor, the better the fitting.
-     *         This factor is NOT normalized, it is a positive float between 0 and FLOAT_MAX
-     */
-    float computeScore( Pose robotPose, std::vector<MeasurePoint> measurePoints );
-
-    /**
-     * @return QImage of size m_PixelSize, m_PixelSize with values of m_OccupancyProbability scaled to 0-254
-     */
-    QImage getProbabilityQImage(int trancparencyThreshold, bool showInaccessible) const;
-
-    //puma2::ColorImageRGB8* getUpdateImage( bool withMap=true ); TODO
-
-    /**
-     * Returns an "image" of the obstacles e.g. seen in the 3D scans
-     * @returns image with dark red dots in areas where the obstacles were seen
-     */
-    //puma2::ColorImageRGB8* getObstacleImage ( ); TODO
-
-    /**
-     * Returns an "image" of occupancy probability image.
-     * @param[out] data vector containing occupancy probabilities. 0 = free, 100 = occupied, -1 = NOT_KNOWN
-     * @param[out] width Width of data array
-     * @param[out] height Height of data array
-     * @param[out] resolution Resolution of the map (m_Resolution)
-     */
-    void getOccupancyProbabilityImage(vector<int8_t> &data, int& width, int& height, float &resolution);
-
-    /**
-     * This method marks free the position of the robot (according to its dimensions).
-     */
-    void markRobotPositionFree();
-
-    /**
-     * @brief Computes the contrast of a single pixel.
-     * @param prob probability value (100=occupied, 50=NOT_KNOWN, 0=free) of a pixel.
-     * @return Contrast value from 0 (no contrast) to 1 (max. contrast) of this pixel
-     */
-    double contrastFromProbability (int8_t prob);
-
-    /**
-     * @brief This method computes the sharpness of the occupancy grid
-     * @return Contrast value from 0 (no contrast) to 1 (max. contrast) of the map
-     */
-    double evaluateByContrast();
-
-    /// GETTERS
-
-    Box2D<int> getExploredRegion() { return m_ExploredRegion; }
-    Box2D<int> getChangedRegion() { return m_ChangedRegion; }
-
-    /**
-     * Sets cells of this map to free or occupied according to maskMap
-     */
-     void applyMasking(const nav_msgs::OccupancyGrid::ConstPtr &msg);
-
-
-  protected:
-
-    /**
-     * This method increments m_MeasurementCount for pixel p.
-     * @param p Pixel that has been measured.
-     */
-    void incrementMeasurementCount(Eigen::Vector2i p);
-
-    /**
-     * This method increments the occupancy count int m_OccupancyCount for pixel p.
-     * @param p Occupied pixel.
-     */
-    void incrementOccupancyCount(Eigen::Vector2i p);
-
-    /**
-     * This method increments m_MeasurementCount and if neccessary m_OccupancyCount for all pixels.
-     */
-    void applyChanges();
-
-    void clearChanges();
-
-    /**
-     * This method scales the counts of all pixels down to the given value.
-     * @param maxCount Maximum value to which all counts are set.
-     */
-    void scaleDownCounts(int maxCount);
-
-   /**
-     * This function paints a line from a start pixel to an end pixel.
-     * The computation is made with the Bresenham algorithm.
-     * @param data array on which the line shall be painted
-     * @param startPixel starting coordinates of the beam
-     * @param endPixel ending coordinates of the beam
-     * @param value The value with which the lines are marked.
-     */
-    template<class DataT>
-    void drawLine(DataT* data, Eigen::Vector2i& startPixel, Eigen::Vector2i& endPixel, char value);
-
-    /**
-     * This method computes the values for m_OccupancyProbabilities from m_MeasurementCount and m_OccupancyCount.
-     */
-    void computeOccupancyProbabilities();
-
-    /**
-     * This method sets all values of m_CurrentChanges to NO_CHANGE.
-     */
-    void clearCurrentChanges();
-
-    /**
-     * This method resets all values of m_MinChangeX, m_MaxChangeX, m_MinChangeY and m_MaxChangeY.
-     * This means that no current changes are assumed.
-     */
-    void resetChangedRegion();
-
-    /**
-     * This method updates the values of m_MinChangeX, m_MaxChangeX, m_MinChangeY and m_MaxChangeY to current changes.
-     * The area around the current robot pose will be included to the changed region.
-     * @param robotPose The current pose of the robot.
-     */
-    void updateChangedRegion(Pose robotPose);
-
-    /**
-     * This method sets all values of m_MinChangeX, m_MaxChangeX, m_MinChangeY and m_MaxChangeY
-      * to initial values so that the complete map will be processed.
-     */
-    void maximizeChangedRegion();
-
-    /**
-     * This method resets all values of m_ExploredX, m_MaxExploredX, m_MinExploredY and m_MaxExploredY.
-     */
-    void resetExploredRegion();
-
-    /**
-     * Deletes all allocated members.
-     */
-     void cleanUp();
-
-    /**
-     * Stores the size of one map pixel in m.
-     */
-    float m_Resolution;
-
-    /**
-     * Stores the origin of the map
-     */
-    geometry_msgs::Pose m_Origin;
-    /**
-     * Stores the width of the map in cell numbers.
-     */
-    int m_PixelSize;
-
-    /**
-     * Stores the size of the map arrays, i.e. m_PixelSize * m_PixelSize
-     * for faster computation.
-     */
-    unsigned m_ByteSize;
-
-    /**
-     * Array to store occupancy probability values.
-     * Values between 0 and 1.
-     */
-    float* m_OccupancyProbability;
-
-    // Counts how often a pixel is hit by a measurement.
-    unsigned short* m_MeasurementCount;
-
-    // Counts how often a pixel is hit by a measurement that says the pixel is occupied.
-    unsigned short* m_OccupancyCount;
-
-    // Counts how often a cell is marked as inaccessible via markInaccessible()
-    unsigned char* m_InaccessibleCount;
-
-    // Used for setting flags for cells, that have been modified during the current update.
-    unsigned char* m_CurrentChanges;
-    
-    // Used for high Sensitive areas
-    unsigned short* m_HighSensitive;
-
-    /**
-     * Store values from config files.
-     */
-    // maximum valid range of one laser measurement
-    float m_LaserMaxRange;
-    //minimum valid range of one laser measurement
-    float m_LaserMinRange;
-    //minimum range classified as free in case of errorneous laser measurement
-    float m_FreeReadingDistance;
-    //enables checking to avoid matching front- and backside of an obstacle, e.g. wall
-    bool m_BacksideChecking;
-    //leaves a small border around obstacles unchanged when inserting a laser scan
-    bool m_ObstacleBorders;
-    //minimum distance in m between two samples for probability calculation
-    float m_MeasureSamplingStep;
-    
-    //bool to reset high_sensitive Areas on the next iteration
-    bool m_reset_high;
-
-    //position of the laser scaner in base_link frame
-    geometry_msgs::Point m_LaserPos;
-
-    /**
-     * Defines a bounding box around the changes in the current map.
-     */
-    Box2D<int> m_ChangedRegion;
-
-    /**
-     * Defines a bounding box around the area in the map, which is already explored.
-     */
-    Box2D<int> m_ExploredRegion;
-
-    /**
-     * ros transform listener
-     */
-    tf::TransformListener m_tfListener;
-
-};
-#endif
diff --git a/homer_mapping/src/ParticleFilter/CMakeLists.txt b/homer_mapping/src/ParticleFilter/CMakeLists.txt
deleted file mode 100644
index d96f7175..00000000
--- a/homer_mapping/src/ParticleFilter/CMakeLists.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-set(
-	ParticleFilter_SRC
-		HyperSlamFilter.cpp
-		SlamParticle.cpp
-		SlamFilter.cpp
-		Particle.cpp
-)
-
-add_library(
-	ParticleFilter
-		${ParticleFilter_SRC}
-)
-
-target_link_libraries(
-	ParticleFilter
-		OccupancyMap
-		MappingMath
-)
diff --git a/homer_mapping/src/ParticleFilter/HyperSlamFilter.cpp b/homer_mapping/src/ParticleFilter/HyperSlamFilter.cpp
deleted file mode 100755
index cd005dbd..00000000
--- a/homer_mapping/src/ParticleFilter/HyperSlamFilter.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-#include "HyperSlamFilter.h"
-
-#include <vector>
-#include <cmath>
-#include <fstream>
-#include <sstream>
-#include <stdlib.h>
-
-#include "ros/ros.h"
-
-using namespace std;
-
-HyperSlamFilter::HyperSlamFilter (int particleFilterNum, int particleNum )
-{
-  m_ParticleFilterNum = particleFilterNum;
-        if ( m_ParticleFilterNum < 1 )
-        {
-                m_ParticleFilterNum = 1;
-        }
-  ROS_DEBUG( "Using %d Hyper Particles.", particleFilterNum);
-
-  m_ParticleNum = particleNum;
-
-        m_DoMapping = true;
-
-  m_DeletionThreshold = 0.98;
-
-  for ( unsigned i=0; i < m_ParticleFilterNum; i++ )
-  {
-    ostringstream stream;
-    stream << "SlamFilter " << i;
-    SlamFilter *slamFilter = new SlamFilter ( particleNum );
-    m_SlamFilters.push_back ( slamFilter );
-  }
-
-  m_BestSlamFilter = m_SlamFilters[0];
-}
-
-HyperSlamFilter::~HyperSlamFilter()
-{
-  for (unsigned i = 0; i < m_ParticleFilterNum; i++)
-  {
-    if( m_SlamFilters[i] )
-    {
-      delete m_SlamFilters[i];
-      m_SlamFilters[i] = 0;
-    }
-  }
-
-}
-
-void HyperSlamFilter::setRotationErrorRotating ( float percent )
-{
-   for ( unsigned i=0; i < m_SlamFilters.size(); i++ )
-   {
-     m_SlamFilters[i]->setRotationErrorRotating(percent / 100.0);
-   }
-}
-
-void HyperSlamFilter::setRotationErrorTranslating ( float degreePerMeter )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setRotationErrorTranslating(degreePerMeter / 180.0 * M_PI);
-  }
-}
-
-void HyperSlamFilter::setTranslationErrorTranslating ( float percent )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setTranslationErrorTranslating(percent / 100.0);
-  }
-}
-
-void HyperSlamFilter::setTranslationErrorRotating ( float mPerDegree )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setTranslationErrorRotating( mPerDegree / 180.0 * M_PI );
-  }
-}
-
-void HyperSlamFilter::setMoveJitterWhileTurning ( float mPerDegree )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setMoveJitterWhileTurning( mPerDegree / 180.0 * M_PI );
-  }
-}
-
-void HyperSlamFilter::setScanMatchingClusterSize ( float minClusterSize )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setScanMatchingClusterSize( minClusterSize );
-  }
-}
-
-void HyperSlamFilter::resetHigh()
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->resetHigh();
-  }
-}
-
-void HyperSlamFilter::setMapping ( bool doMapping )
-{
-        m_DoMapping = doMapping;
-}
-
-void HyperSlamFilter:: setOccupancyMap ( OccupancyMap* occupancyMap )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setOccupancyMap( occupancyMap );
-  }
-}
-
-void HyperSlamFilter::setRobotPose ( Pose pose, double scatterVarXY, double scatterVarTheta )
-{
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    m_SlamFilters[i]->setRobotPose(pose, scatterVarXY, scatterVarTheta);
-  }
-}
-
-void HyperSlamFilter::filter ( Pose currentPose, sensor_msgs::LaserScanConstPtr laserData, ros::Time measurementTime, ros::Duration &filterDuration)
-{
-  //call filter methods of all particle filters
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    bool randOnOff = (rand() % 100) < 80;
-    //if mapping is on, switch on with 80% probability to introduce some randomness in different particle filters
-    m_SlamFilters[i]->setMapping( m_DoMapping && randOnOff );
-    m_SlamFilters[i]->filter(currentPose, laserData, measurementTime, filterDuration);
-  }
-
-  //determine which map has the best/worst contrast
-  double bestContrast = 0.0;
-  static unsigned int bestFilter = 0;
-  double worstContrast = 100.0;
-  static unsigned int worstFilter = 0;
-
-  for ( unsigned int i=0; i < m_SlamFilters.size(); i++ )
-  {
-    double contrast = m_SlamFilters[i]->evaluateByContrast();
-                {
-                        if( contrast > bestContrast )
-                        {
-                                bestContrast = contrast;
-                                bestFilter = i;
-                        }
-                        if ( contrast < worstContrast )
-                        {
-                                worstContrast = contrast;
-                                worstFilter = i;
-                        }
-                }
-  }
-
-  // set best filter
-        SlamFilter* lastBestFilter = m_BestSlamFilter;
-  m_BestSlamFilter = m_SlamFilters[bestFilter];
-
-  if ( m_BestSlamFilter != lastBestFilter )
-  {
-    ROS_INFO( "Switched to best filter %d (bestContrast: %f) -- the worst filter is %d (worstContrast: %f)", bestFilter, bestContrast, worstFilter, worstContrast); //TODO
-  }
-
-  if ( bestFilter != worstFilter )
-  {
-    if ( worstContrast < ( bestContrast * m_DeletionThreshold ) )
-    {
-      // replace the worst filter by the one with the best contrast
-      delete m_SlamFilters[worstFilter];
-      m_SlamFilters[worstFilter] = new SlamFilter ( * m_SlamFilters [bestFilter] );
-    }
-  }
-}
-
-SlamFilter* HyperSlamFilter::getBestSlamFilter()
-{
-  return m_BestSlamFilter;
-}
-
-void HyperSlamFilter::setDeletionThreshold(double deletionThreshold)
-{
-  m_DeletionThreshold = deletionThreshold;
-}
diff --git a/homer_mapping/src/ParticleFilter/HyperSlamFilter.h b/homer_mapping/src/ParticleFilter/HyperSlamFilter.h
deleted file mode 100755
index d02c2b6d..00000000
--- a/homer_mapping/src/ParticleFilter/HyperSlamFilter.h
+++ /dev/null
@@ -1,163 +0,0 @@
-#ifndef HYPERSLAMFILTER_H
-#define HYPERSLAMFILTER_H
-
-#include <vector>
-#include "ParticleFilter.h"
-#include "SlamParticle.h"
-#include "SlamFilter.h"
-#include "Math/Pose.h"
-#include "../OccupancyMap/OccupancyMap.h"
-
-#include "sensor_msgs/LaserScan.h"
-
-class OccupancyMap;
-
-/**
- * @class HyperSlamFilter
- *
- * @author Malte Knauf, Stephan Wirth, Susanne Maur
- *
- * @brief This class is used to determine the robot's most likely pose with given map and given laser data.
- *
- * A particle filter is a descrete method to describe and compute with a probability distribution.
- * This particle filter uses an occupancy map to determine the probability of robot states.
- * The robot states are stored in a particle together with their weight @see SlamParticle.
- *
- * @see SlamParticle
- * @see ParticleFilter
- * @see OccupancyMap
- */
-class HyperSlamFilter {
-
-  public:
-
-   /**
-     * This constructor initializes the random number generator and sets the member variables to the given values.
-     * @param particleNum Number of particleFilters to use.
-     */
-    HyperSlamFilter(int particleFilterNum, int particleNum);
-
-    /**
-     * The destructor releases the OccupancyMap and the particles.
-     */
-    ~HyperSlamFilter();
-
-    /**
-     * This method runs the filter routine.
-     * The given odometry measurement is used as movement hypothesis, the laserData-vector is used
-     * as measurement and is used to weight the particles.
-     * @param currentPoseOdometry Odometry data of time t.
-     * @param laserData msg containing the laser measurement.
-     * @param measurementTime Time stamp of the measurement.
-     * @param filterDurationTime Returns the time in ms that the filtering needed
-     */
-    void filter(Pose currentPoseOdometry, sensor_msgs::LaserScanConstPtr laserData, ros::Time measurementTime,
-                ros::Duration  &filterDuration);
-
-    /**
-     * Computes and sets the new value for m_Alpha1.
-     * @param percent Rotation error while rotating (see class constructor for details)
-     */
-    void setRotationErrorRotating(float percent);
-
-    /**
-     * Computes and sets the new value for m_Alpha2.
-     * @param degreesPerMeter Rotation error while translating (see class constructor for details)
-     */
-    void setRotationErrorTranslating(float degreesPerMeter);
-
-    /**
-     * Computes and sets the new value for m_Alpha3.
-     * @param percent Translation error while translating (see class constructor for details)
-     */
-    void setTranslationErrorTranslating(float percent);
-
-    /**
-     * Computes and sets the new value for m_Alpha4.
-     * @param  mPerDegree Translation error while rotating (see class constructor for details)
-     */
-    void setTranslationErrorRotating(float mPerDegree);
-
-    /**
-     * Computes and sets the new value for m_Alpha5.
-     * @param  mPerDegree Move jitter while turning (see class constructor for details)
-     */
-    void setMoveJitterWhileTurning(float mPerDegree);
-
-    /**
-     * Sets a new minimal size of a cluster of scan points which is considered in scan matching.
-     * @param  clusterSize Minimal size of a cluster in mm of scan points which is considered in scan matching.
-     */
-    void setScanMatchingClusterSize(float clusterSize);
-
-    /**
-     * Sets whether the map is updated or just used for self-localization.
-     * @param doMapping True if robot shall do mapping, false otherwise.
-     */
-    void setMapping(bool doMapping);
-
-    /**
-     * Deletes the current occupancy map and copies a new one into the system.
-     * @param occupancyMap The occupancy map to load into the system (copies are being made)
-     */
-    void setOccupancyMap(OccupancyMap* occupancyMap);
-
-    /**
-     * Sets the robot pose in the current occupancy map.
-     * @param Robot pose.
-     * @param scatterVariance if not equal to 0 the poses are equally scattered around the pose
-     */
-    void setRobotPose(Pose pose, double scatterVarXY=0.0, double scatterVarTheta=0.0);
-
-    /**
-     *Returns the best SlamFilter
-     */
-    SlamFilter* getBestSlamFilter();
-    
-    void resetHigh();
-
-    /**
-     * Factor (default 0.98) of the contrast of the best particle.
-     * If the contrast of the worst particle is below this threshold
-     * it will be replaced by the best particle
-     * @param deletionThreshold see above
-     */
-    void setDeletionThreshold(double deletionThreshold);
-
-    /**
-     * applies masking to map of slam filter set in GUI
-     * @param msg masking message received from GUI
-     */
-    void applyMasking(const nav_msgs::OccupancyGrid::ConstPtr &msg)
-    {
-        for(unsigned i = 0; i < m_ParticleFilterNum; ++i)
-        {
-            m_SlamFilters[i]->applyMasking(msg);
-        }
-    }
-
-  private:
-
-    /** Used SlamFilters */
-    std::vector <SlamFilter*> m_SlamFilters;
-
-    /** Number of SlamFilters */
-    unsigned m_ParticleFilterNum;
-
-    /** Number of Particles of SlamFilter */
-    unsigned m_ParticleNum;
-
-    /** */
-    double m_DeletionThreshold;
-
-    /** Best SLAM Filter */
-    SlamFilter* m_BestSlamFilter;
-
-    /** Worst SlamFilter */
-    SlamFilter* m_WorstSlamFilter;
-
-    bool m_DoMapping;
-
-};
-#endif
-
diff --git a/homer_mapping/src/ParticleFilter/Particle.cpp b/homer_mapping/src/ParticleFilter/Particle.cpp
deleted file mode 100644
index bce3b5b1..00000000
--- a/homer_mapping/src/ParticleFilter/Particle.cpp
+++ /dev/null
@@ -1,10 +0,0 @@
-#include "Particle.h"
-
-Particle::Particle(float weight, int id) {
-  m_Weight = weight;
-  m_Id = id;
-}
-
-Particle::~Particle() {
-}
-
diff --git a/homer_mapping/src/ParticleFilter/Particle.h b/homer_mapping/src/ParticleFilter/Particle.h
deleted file mode 100644
index bd96aa85..00000000
--- a/homer_mapping/src/ParticleFilter/Particle.h
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifndef PARTICLE_H
-#define PARTICLE_H  
-
-#include <iostream>
-#include <fstream>
-
-/** 
- * @class Particle
- *
- * @author Malte Knauf, Stephan Wirth
- *
- * @brief This class is an implementation of a "particle".
- *
- * A particle as it is used in particle filters is a set of one state and one importance factor (=weight).
- * A set of Particles is a discrete representation of a probability distribution.
- * 
- * @see ParticleFilter
- */
-class Particle {
-    
-  public:
-    /**
-     * This constructor assigns the given weight to the member m_Weight.
-     * @param weight The weight of the particle.
-     */
-    Particle(float weight = 0.0, int id = 0);
-
-    /**
-     * The destructor does nothing so far.
-     */
-    virtual ~Particle();
-
-    /**
-     * This method returns the importance factor of the particle.
-     * @return The importance factor (=weight) of the particle.
-     */
-    inline float getWeight() const { return m_Weight; }
-
-    /**
-     * Method to set the weight of the particle.
-     * @param newWeight New weight for the particle.
-     */
-    inline void setWeight(float newWeight) { m_Weight=newWeight; }
-
-    /**
-     * @return id of the particle that is stored in m_Id
-     */
-    inline int getId() { return m_Id; }
-
-  private:
-    /**
-     * Stores the importance factor (=weight) of the particle. This should be a value between 0 and 1.
-     */
-    float m_Weight;
-
-    /**
-     * Stores the id of the particle (for testing purpose)
-     */
-    int m_Id;
-
-};
-
-#endif
-
diff --git a/homer_mapping/src/ParticleFilter/ParticleFilter.h b/homer_mapping/src/ParticleFilter/ParticleFilter.h
deleted file mode 100644
index fa6a7f99..00000000
--- a/homer_mapping/src/ParticleFilter/ParticleFilter.h
+++ /dev/null
@@ -1,310 +0,0 @@
-#ifndef PARTICLEFILTER_H
-#define PARTICLEFILTER_H
-
-#include <iostream>
-#include <cmath>
-#include <limits.h>
-
-#include <ros/ros.h>
-
-class Particle;
-
-const float MIN_EFFECTIVE_PARTICLE_WEIGHT = 0.2;
-
-/**
- * @class ParticleFilter
- *
- * @author Malte Knauf, Stephan Wirth
- *
- * @brief This class is a template class for a particle filter.
- *
- * A particle filter is a descrete method to describe and compute with a probability distribution.
- * This template class implements the basic methods for a particle filter: sort() and resample().
- * Use this class do derivate your custom particle filter from it. Use a self-defined subclass of
- * Particle as ParticleType.
- *
- * @see Particle
- */
-template <class ParticleType>
-class ParticleFilter {
-
-  public:
-    /**
-     * The constructor initializes the random number generator and allocates the memory for the particle lists.
-     * The lists will have particleNum elements.
-     * @param particleNum Number of particles for the filter.
-     */
-    ParticleFilter<ParticleType>(int particleNum);
-
-    /**
-     * The destructor releases the particle lists.
-     */
-    virtual ~ParticleFilter();
-
-    /**
-     * @return Number of particles used in this filter
-     */
-    int getParticleNum();
-
-    /**
-     * @return The number of effective particles (according to "Improving Grid-based SLAM with Rao-Blackwellized Particle
-     * Filters by Adaptive Proposals and Selective Resampling (2005)" by Giorgio Grisetti, Cyrill Stachniss, Wolfram Burgard
-     */
-    int getEffectiveParticleNum() const;
-    int getEffectiveParticleNum2() const;
-
-    /**
-     * @return Pointer to the particle that has the highest weight.
-     */
-    ParticleType* getBestParticle() const;
-
-
-  protected:
-
-    /**
-     * This method generates a random variable in the interval [0,1].
-     * @param init The initial value for the static random base number. When running the constructor of this
-     * class, this method is run once with the C-function time() as parameter to initialize it.
-     * Then you should use it without parameter.
-     * @return Random value between 0 and 1
-     */
-    double random01(unsigned long init = 0) const;
-
-    /**
-     * This method sorts the particles in m_CurrentList from leftIndex to rightIndex according to their weight.
-     * The particle with the highest weight is at position 0 after calling this function. The algorithm used here is
-     * known as quicksort and works recursively.
-     * @param leftIndex Left index of area to sort
-     * @param rightIndex Right index of area to sort
-     */
-    void sort(int leftIndex, int rightIndex);
-
-    /**
-     * This method normalizes the weights of the particles. After calling this function, the sum of the weights of
-     * all particles in m_CurrentList equals 1.0.
-     * In this function the sum of all weights of the particles of m_CurrentList is computed and each weight of each
-     * particle is devided through this sum.
-     */
-    void normalize();
-
-    /**
-     * This method selects a new set of particles out of an old set according to their weight
-     * (importance resampling). The particles from the list m_CurrentList points to are used as source,
-     * m_LastList points to the destination list. The pointers m_CurrentList and m_LastList are switched.
-     * The higher the weight of a particle, the more particles are drawn (copied) from this particle.
-     * The weight remains untouched, because measure() will be called afterwards.
-     * This method only works on a sorted m_CurrentList, therefore sort() is called first.
-     */
-    void resample();
-
-    /**
-     * This method drifts the particles (second step of a filter process).
-     * Has to be implemented in sub-classes (pure virtual function).
-     */
-    virtual void drift() = 0;
-
-    /**
-     * This method has to be implemented in sub-classes. It is used to determine the weight of each particle.
-     */
-    virtual void measure() = 0;
-
-    /**
-     * These two pointers point to m_ParticleListOne and to m_ParticleListTwo.
-     * The particles are drawn from m_LastList to m_CurrentList to avoid new and delete commands.
-     * In each run, the pointers are switched in resample().
-     */
-    ParticleType** m_CurrentList;
-    ParticleType** m_LastList;
-
-    /**
-     * Stores the number of particles.
-     */
-    int m_ParticleNum;
-
-    /**
-     * Stores the number of effective particles.
-     */
-    int m_EffectiveParticleNum;
-};
-
-template <class ParticleType>
-ParticleFilter<ParticleType>::ParticleFilter(int particleNum) {
-  // initialize particle lists
-  m_CurrentList = new ParticleType*[particleNum];
-  m_LastList = new ParticleType*[particleNum];
-
-  // initialize random number generator
-  random01(time(0));
-
-  m_ParticleNum = particleNum;
-}
-
-
-template <class ParticleType>
-ParticleFilter<ParticleType>::~ParticleFilter() {
-  if (m_CurrentList) {
-    delete[] m_CurrentList;
-    m_CurrentList = 0;
-  }
-  if (m_LastList) {
-    delete[] m_LastList;
-    m_LastList = 0;
-  }
-}
-
-template <class ParticleType>
-int ParticleFilter<ParticleType>::getParticleNum() {
-  return m_ParticleNum;
-}
-
-template <class ParticleType>
-double ParticleFilter<ParticleType>::random01(unsigned long init) const {
-  static unsigned long n;
-  if (init > 0) {
-    n = init;
-  }
-  n = 1664525 * n + 1013904223;
-  // create double from unsigned long
-  return (double)(n/2) / (double)LONG_MAX;
-}
-
-
-template <class ParticleType>
-void ParticleFilter<ParticleType>::sort(int indexLeft, int indexRight) {
-
-  // SOMETHING LEFT TO SORT?
-  if (indexLeft >= indexRight) {
-    // ready!
-    return;
-  }
-
-  // CREATE PARTITION
-  int le = indexLeft;
-  int ri = indexRight;
-  int first = le;
-  int pivot = ri--;
-  while(le <= ri) {
-    // skip from left
-    while(m_CurrentList[le]->getWeight() > m_CurrentList[pivot]->getWeight()) {
-      le++;
-    }
-    // skip from right
-    while((ri >= first) && (m_CurrentList[ri]->getWeight() <= m_CurrentList[pivot]->getWeight())) {
-      ri--;
-    }
-    // now we have two elements to swap
-    if(le < ri) {
-      // swap
-      ParticleType* temp = m_CurrentList[le];
-      m_CurrentList[le] = m_CurrentList[ri];
-      m_CurrentList[ri] = temp;
-      le++;
-    }
-  }
-
-  if(le != pivot) {
-    // swap
-    ParticleType* temp = m_CurrentList[le];
-    m_CurrentList[le] = m_CurrentList[pivot];
-    m_CurrentList[pivot] = temp;
-  }
-
-  // sort left side
-  sort(indexLeft, le - 1);
-  // sort right side
-  sort(le + 1, indexRight);
-
-}
-
-template <class ParticleType>
-void ParticleFilter<ParticleType>::normalize() {
-
-  float weightSum = 0.0;
-  for (int i = 0; i < m_ParticleNum; i++) {
-    weightSum += m_CurrentList[i]->getWeight();
-  }
-  // only normalize if weightSum is big enough to divide
-  if (weightSum > 0.000001) {
-    for (int i = 0; i < m_ParticleNum; i++) {
-      float newWeight = m_CurrentList[i]->getWeight() / weightSum;
-      m_CurrentList[i]->setWeight(newWeight);
-    }
-  } else {
-      ROS_WARN_STREAM( "Particle weights VERY small: " << weightSum << ". Got "<< m_ParticleNum << " particles.");
-  }
-}
-
-template <class ParticleType>
-void ParticleFilter<ParticleType>::resample() 
-{
-    // swap pointers
-    ParticleType** help = m_LastList;
-    m_LastList = m_CurrentList;
-    m_CurrentList = help;
-    // now we copy from m_LastList to m_CurrentList
-
-    int drawIndex = 0;
-    // index of the particle where we are drawing to
-    int targetIndex = 0;
-
-    int numToDraw = 0;
-    do {
-      numToDraw = static_cast<int>(round((m_ParticleNum * m_LastList[drawIndex]->getWeight()) + 0.5));
-      for (int i = 0; i < numToDraw; i++) {
-        *m_CurrentList[targetIndex++] = *m_LastList[drawIndex];
-        // don't draw too much
-        if (targetIndex >= m_ParticleNum) {
-          break;
-        }
-      }
-      drawIndex++;
-    } while (numToDraw > 0 && targetIndex < m_ParticleNum);
-
-    // fill the rest of the particle list
-    for (int i = targetIndex; i < m_ParticleNum; i++) {
-      float particlePos = random01();
-      float weightSum = 0.0;
-      drawIndex = 0;
-      weightSum += m_LastList[drawIndex]->getWeight();
-      while (weightSum < particlePos) {
-        weightSum += m_LastList[++drawIndex]->getWeight();
-      }
-      *m_CurrentList[i] = *m_LastList[drawIndex];
-    }
-}
-
-
-template <class ParticleType>
-int ParticleFilter<ParticleType>::getEffectiveParticleNum() const {
-  // does not work with normalized particle weights
-  // does not work with our weights at all (algorithm of Grisetti)
-  float squareSum = 0;
-  for (int i = 0; i < m_ParticleNum; i++) {
-    float weight = m_CurrentList[i]->getWeight();
-    squareSum += weight * weight;
-  }
-  return static_cast<int>(1.0f / squareSum);
-}
-
-
-template <class ParticleType>
-int ParticleFilter<ParticleType>::getEffectiveParticleNum2() const {
-    // does not work with normalized particle weights
-  int effectiveParticleNum = 0;
-  for (int i = 0; i < m_ParticleNum; i++) {
-    if (m_CurrentList[i]->getWeight() > MIN_EFFECTIVE_PARTICLE_WEIGHT) {
-      effectiveParticleNum ++;
-    }
-  }
-  return effectiveParticleNum;
-}
-
-
-template <class ParticleType>
-ParticleType* ParticleFilter<ParticleType>::getBestParticle() const {
-  return m_CurrentList[0];
-}
-
-
-#endif
-
diff --git a/homer_mapping/src/ParticleFilter/SlamFilter.cpp b/homer_mapping/src/ParticleFilter/SlamFilter.cpp
deleted file mode 100644
index 2ebdbd16..00000000
--- a/homer_mapping/src/ParticleFilter/SlamFilter.cpp
+++ /dev/null
@@ -1,653 +0,0 @@
-#include "SlamFilter.h"
-
-#include "Math/Transformation2D.h"
-#include "Math/Math.h"
-
-#include "tools/loadRosConfig.h"
-
-#include "tf/transform_broadcaster.h"
-
-#include <vector>
-#include <cmath>
-#include <fstream>
-#include <sstream>
-
-#include "ros/ros.h"
-
-// minimum move for translation in m
-const float MIN_MOVE_DISTANCE2 = 0.02 * 0.02;
-// minimum turn in radiants
-const float MIN_TURN_DISTANCE2 = 0.1 * 0.1;
-
-const float M_2PI = 2 * M_PI;
-
-SlamFilter::SlamFilter ( int particleNum ) : ParticleFilter<SlamParticle> ( particleNum )
-{
-
-  m_OccupancyMap = new OccupancyMap();
-  // generate initial particles
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-    m_CurrentList[i] = new SlamParticle();
-    m_LastList[i] = new SlamParticle();
-  }
-
-  float rotationErrorRotating = 0.0;
-  loadConfigValue("/particlefilter/error_values/rotation_error_rotating", rotationErrorRotating);
-  float rotationErrorTranslating = 0.0;
-  loadConfigValue("/particlefilter/error_values/rotation_error_translating", rotationErrorTranslating);
-  float translationErrorTranslating = 0.0;
-  loadConfigValue("/particlefilter/error_values/translation_error_translating", translationErrorTranslating);
-  float translationErrorRotating = 0.0;
-  loadConfigValue("/particlefilter/error_values/translation_error_translating", translationErrorRotating);
-  float moveJitterWhileTurning = 0.0;
-  loadConfigValue("/particlefilter/error_values/move_jitter_while_turning", moveJitterWhileTurning);
-  loadConfigValue("/particlefilter/max_rotation_per_second", m_MaxRotationPerSecond);
-
-  int updateMinMoveAngleDegrees;
-  loadConfigValue("/particlefilter/update_min_move_angle", updateMinMoveAngleDegrees);
-  m_UpdateMinMoveAngle = Math::deg2Rad(updateMinMoveAngleDegrees);
-  loadConfigValue("/particlefilter/update_min_move_dist", m_UpdateMinMoveDistance);
-  double maxUpdateInterval;
-  loadConfigValue("/particlefilter/max_update_interval", maxUpdateInterval);
-  m_MaxUpdateInterval = ros::Duration(maxUpdateInterval);
-
-  setRotationErrorRotating ( rotationErrorRotating );
-  setRotationErrorTranslating ( rotationErrorTranslating );
-  setTranslationErrorTranslating ( translationErrorTranslating );
-  setTranslationErrorRotating ( translationErrorRotating );
-  setMoveJitterWhileTurning ( moveJitterWhileTurning );
-
-  m_FirstRun = true;
-  m_DoMapping = true;
-
-  m_EffectiveParticleNum = m_ParticleNum;
-
-  m_LastUpdateTime = ros::Time(0);
-}
-
-SlamFilter::SlamFilter ( SlamFilter& slamFilter ) : ParticleFilter<SlamParticle> ( slamFilter.m_ParticleNum )
-{
-  m_OccupancyMap = new OccupancyMap ( * ( slamFilter.m_OccupancyMap ) );
-  // generate initial particles
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-    if ( slamFilter.m_CurrentList[i] == 0 )
-    {
-      m_CurrentList[i]=0;
-    }
-    else
-    {
-      m_CurrentList[i] = new SlamParticle ( * ( slamFilter.m_CurrentList[i] ) );
-    }
-    if ( slamFilter.m_LastList[i] == 0 )
-    {
-      m_LastList[i]=0;
-    }
-    else
-    {
-      m_LastList[i] = new SlamParticle ( * ( slamFilter.m_LastList[i] ) );
-    }
-  }
-
-  float rotationErrorRotating = 0.0;
-  loadConfigValue("/particlefilter/error_values/rotation_error_rotating", rotationErrorRotating);
-  float rotationErrorTranslating = 0.0;
-  loadConfigValue("/particlefilter/error_values/rotation_error_translating", rotationErrorTranslating);
-  float translationErrorTranslating = 0.0;
-  loadConfigValue("/particlefilter/error_values/translation_error_translating", translationErrorTranslating);
-  float translationErrorRotating = 0.0;
-  loadConfigValue("/particlefilter/error_values/translation_error_translating", translationErrorRotating);
-  float moveJitterWhileTurning = 0.0;
-  loadConfigValue("/particlefilter/error_values/move_jitter_while_turning", moveJitterWhileTurning);
-  loadConfigValue("/particlefilter/max_rotation_per_second", m_MaxRotationPerSecond);
-
-  int updateMinMoveAngleDegrees;
-  loadConfigValue("/particlefilter/update_min_move_angle", updateMinMoveAngleDegrees);
-  m_UpdateMinMoveAngle = Math::deg2Rad(updateMinMoveAngleDegrees);
-  loadConfigValue("/particlefilter/update_min_move_dist", m_UpdateMinMoveDistance);
-  double maxUpdateInterval;
-  loadConfigValue("/particlefilter/max_update_interval", maxUpdateInterval);
-  m_MaxUpdateInterval = ros::Duration(maxUpdateInterval);
-
-  setRotationErrorRotating ( rotationErrorRotating );
-  setRotationErrorTranslating ( rotationErrorTranslating );
-  setTranslationErrorTranslating ( translationErrorTranslating );
-  setTranslationErrorRotating ( translationErrorRotating );
-  setMoveJitterWhileTurning ( moveJitterWhileTurning );
-
-  m_FirstRun = slamFilter.m_FirstRun;
-  m_DoMapping = slamFilter.m_DoMapping;
-
-  m_EffectiveParticleNum = slamFilter.m_EffectiveParticleNum;
-
-  m_LastUpdateTime = slamFilter.m_LastUpdateTime;
-
-  m_ReferencePoseOdometry = slamFilter.m_ReferencePoseOdometry;
-  m_ReferenceMeasurementTime = slamFilter.m_ReferenceMeasurementTime;
-}
-
-
-SlamFilter::~SlamFilter()
-{
-  if ( m_OccupancyMap )
-  {
-    delete m_OccupancyMap;
-  }
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-    if ( m_CurrentList[i] )
-    {
-      delete m_CurrentList[i];
-      m_CurrentList[i] = 0;
-    }
-    if ( m_LastList[i] )
-    {
-      delete m_LastList[i];
-      m_LastList[i] = 0;
-    }
-  }
-}
-
-
-void SlamFilter::setRotationErrorRotating ( float percent )
-{
-  m_Alpha1 = percent / 100.0;
-}
-
-void SlamFilter::resetHigh()
-{
-  m_OccupancyMap->resetHighSensitive();
-}
-
-void SlamFilter::setRotationErrorTranslating ( float degreePerMeter )
-{
-  m_Alpha2 = degreePerMeter / 180.0 * M_PI;
-}
-
-void SlamFilter::setTranslationErrorTranslating ( float percent )
-{
-  m_Alpha3 = percent / 100.0;
-}
-
-void SlamFilter::setTranslationErrorRotating ( float mPerDegree )
-{
-  m_Alpha4 = mPerDegree / 180.0 * M_PI;
-}
-
-void SlamFilter::setMoveJitterWhileTurning ( float mPerDegree )
-{
-  m_Alpha5 = mPerDegree / 180.0 * M_PI;
-}
-
-void SlamFilter::setScanMatchingClusterSize ( float minClusterSize )
-{
-  minClusterSize = minClusterSize;
-}
-
-void SlamFilter::setMapping ( bool doMapping )
-{
-  m_DoMapping = doMapping;
-}
-
-void SlamFilter:: setOccupancyMap ( OccupancyMap* occupancyMap )
-{
-    //delete old
-  if ( m_OccupancyMap )
-  {
-    delete m_OccupancyMap;
-  }
-        //copy
-  m_OccupancyMap = occupancyMap;
-}
-
-
-vector<Pose>* SlamFilter::getParticlePoses() const
-{
-  vector<Pose>* particlePoses = new vector<Pose>();
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-    float robotX, robotY, robotTheta;
-    SlamParticle* particle = m_CurrentList[i];
-    particle->getRobotPose ( robotX, robotY, robotTheta );
-    particlePoses->push_back ( Pose ( robotX, robotY, robotTheta ) );
-  }
-  return particlePoses;
-}
-
-vector<SlamParticle*>* SlamFilter::getParticles() const
-{
-  vector<SlamParticle*>* particles = new vector<SlamParticle*>();
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-
-    SlamParticle* particle = m_CurrentList[i];
-    particles->push_back ( particle );
-  }
-  return particles;
-}
-
-void SlamFilter::setRobotPose ( Pose pose, double scatterVarXY, double scatterVarTheta )
-{
-  // set first particle to exact position
-  m_CurrentList[0]->setRobotPose ( pose.x(), pose.y(), pose.theta() );
-  m_LastList[0]->setRobotPose ( pose.x(), pose.y(), pose.theta() );
-  // scatter remaining particles
-  for ( int i = 1; i < m_ParticleNum; ++i )
-  {
-    const double scatterX = randomGauss() * scatterVarXY;
-    const double scatterY = randomGauss() * scatterVarXY;
-    const double scatterTheta = randomGauss() * scatterVarTheta;
-
-    m_CurrentList[i]->setRobotPose ( pose.x()+scatterX, pose.y()+scatterY, pose.theta()+scatterTheta );
-    m_LastList[i]->setRobotPose ( pose.x()+scatterX, pose.y()+scatterY, pose.theta()+scatterTheta );
-  }
-}
-
-vector<float> SlamFilter::getParticleWeights() const
-{
-  vector<float> particleWeights ( m_ParticleNum );
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-    particleWeights[i] = m_CurrentList[i]->getWeight();
-  }
-  return particleWeights;
-}
-
-double SlamFilter::randomGauss ( float variance ) const
-{
-  if ( variance < 0 )
-  {
-    variance = -variance;
-  }
-  double x1, x2, w, y1;
-  do
-  {
-    x1 = 2.0 * random01() - 1.0;
-    x2 = 2.0 * random01() - 1.0;
-    w = x1 * x1 + x2 * x2;
-  }
-  while ( w >= 1.0 );
-
-  w = sqrt ( ( -2.0 * log ( w ) ) / w );
-  y1 = x1 * w;
-  // now y1 is uniformly distributed
-  return sqrt ( variance ) * y1;
-}
-
-vector<float> SlamFilter::filterOutliers (sensor_msgs::LaserScanConstPtr rawData, float maxDiff )
-{
-  if ( rawData->ranges.size() < 2 )
-  {
-    return rawData->ranges;
-  }
-  vector<float> filteredData = rawData->ranges;
-  for ( unsigned int i = 1; i < filteredData.size() - 1; i++ )
-  {
-    if ( abs ( ( float ) ( rawData->ranges[i-1] - rawData->ranges[i]*2 + rawData->ranges[i+1] ) ) > maxDiff*2 )
-    {
-      filteredData[i] = 0;
-    }
-  }
-  if ( fabs ( rawData->ranges[0] - rawData->ranges[1] ) > maxDiff )
-  {
-    filteredData[0] = 0;
-  }
-  if ( fabs ( rawData->ranges[ rawData->ranges.size()-1 ] - rawData->ranges[ rawData->ranges.size()-2 ] ) > maxDiff )
-  {
-    filteredData[ rawData->ranges.size()-1 ] = 0;
-  }
-
-  return filteredData;
-}
-
-void SlamFilter::filter (Pose currentPose, sensor_msgs::LaserScanConstPtr laserData, ros::Time measurementTime, ros::Duration &FilterDuration)
-{
-  // if first run, initialize data
-  if ( m_FirstRun )
-  {
-    m_FirstRun = false;
-    // only do mapping, save first pose as reference
-    if ( m_DoMapping )
-    {
-      m_OccupancyMap->insertLaserData ( laserData );
-    }
-    m_CurrentLaserData = m_CurrentLaserData = boost::make_shared<sensor_msgs::LaserScan>(*laserData); //copy const ptr to be able to change values; //test
-    m_ReferencePoseOdometry = currentPose;
-    m_ReferenceMeasurementTime = measurementTime;
-
-    measure();
-    ROS_INFO_STREAM("first run!");
-    normalize();
-    sort ( 0, m_ParticleNum - 1 );
-
-    return;
-  }
-
-  //m_CurrentLaserConfig = laserConf;
-  m_CurrentPoseOdometry = currentPose;
-  m_CurrentLaserData = boost::make_shared<sensor_msgs::LaserScan>(*laserData); //copy const ptr to be able to change values
-  m_CurrentLaserData->ranges = filterOutliers ( laserData, 0.3 );
-
-  Transformation2D trans = m_CurrentPoseOdometry - m_ReferencePoseOdometry;
-
-  // do not resample if move to small
-  if ( sqr ( trans.x() ) + sqr ( trans.y() ) < MIN_MOVE_DISTANCE2 && sqr ( trans.theta() ) < MIN_TURN_DISTANCE2 )
-  {
-    ROS_DEBUG_STREAM( "Move too small, will not resample." );
-    if ( m_EffectiveParticleNum < m_ParticleNum / 5 )
-    {
-      resample();
-      ROS_INFO_STREAM( "Particles too scattered, resampling." );
-    }
-  }
-  else
-  {
-    resample();
-  }
-
-  // filter steps
-  drift();
-  measure();
-  normalize();
-
-  sort ( 0, m_ParticleNum - 1 );
-
-  // mapping step
-  trans = m_CurrentPoseOdometry - m_ReferencePoseOdometry;
-  double elapsedSeconds = ( measurementTime - m_ReferenceMeasurementTime ).toSec();
-  double thetaPerSecond;
-  if(elapsedSeconds == 0.0)
-      thetaPerSecond = trans.theta();
-  else
-      thetaPerSecond = trans.theta() / elapsedSeconds;
-
-  Pose likeliestPose = getLikeliestPose();
-  Transformation2D transSinceLastUpdate = likeliestPose - m_LastUpdatePose;
-
-  ostringstream stream;
-  stream.precision ( 2 );
-  stream << "Transformation since last update: angle=" << Math::rad2Deg ( transSinceLastUpdate.theta() ) << " dist=" << transSinceLastUpdate.magnitude() << "m" << endl;
-
-  bool update = ( fabs ( transSinceLastUpdate.theta() ) > m_UpdateMinMoveAngle  ) ||
-                ( transSinceLastUpdate.magnitude() > m_UpdateMinMoveDistance ) ||
-                ( ( measurementTime - m_LastUpdateTime ) > m_MaxUpdateInterval );
-
-  if ( m_DoMapping && update )
-  {
-    stream << "Updating map.";
-    m_LastUpdatePose = likeliestPose;
-    m_LastUpdateTime = measurementTime;
-    if ( thetaPerSecond < m_MaxRotationPerSecond )
-    {
-      updateMap();
-    }
-    else
-    {
-      ROS_INFO_STREAM( "No mapping performed, rotation angle too big." );
-    }
-  }
-  else
-  {
-    stream << "No map update performed.";
-  }
-  ROS_DEBUG_STREAM( stream.str() );
-  // safe last used pose and laserdata as reference
-  m_ReferencePoseOdometry = m_CurrentPoseOdometry;
-  m_ReferenceMeasurementTime = measurementTime;
-}
-
-/**
- *  For the probabilistic motion model of the robot we use the following three parameters:
- *  - When the robot starts, the initial orientation may have errors (a few degrees). (m_InitialOrientationError)
- *  - The distance of the robot movement may be wrong (a percentage of the moved distance). (m_TranslationError)
- *  - The orientation of the robot when the motion was finished may be wrong (a percentage of the rotation) (m_RotationError).
- *  [cf. "An Efficient FastSLAM Algorithm for Generating Maps of Large-Scale Cyclic Environments
- *   from Raw Laser Range Measurements", Dirk Haenelt et. al.]
- *  We use Gaussian-Distributions to estimate the error.
- *  The expected value of the errors are zero.
- */
-
-void SlamFilter::drift()
-{
-
-  float rx = m_ReferencePoseOdometry.x();
-  float ry = m_ReferencePoseOdometry.y();
-  float rt = m_ReferencePoseOdometry.theta();
-  float cx = m_CurrentPoseOdometry.x();
-  float cy = m_CurrentPoseOdometry.y();
-  float ct = m_CurrentPoseOdometry.theta();
-
-  Transformation2D odoTrans = m_CurrentPoseOdometry - m_ReferencePoseOdometry;
-
-  // find out if driving forward or backward
-  bool backwardMove = false;
-  float scalar = odoTrans.x() * cosf ( rt ) + odoTrans.y() * sinf ( rt );
-  if ( scalar <= 0 )
-  {
-    backwardMove = true;
-  }
-  float distance = sqrt ( sqr ( odoTrans.x() ) + sqr ( odoTrans.y() ) );
-  float deltaRot1, deltaTrans, deltaRot2;
-  if ( distance < sqrt ( MIN_MOVE_DISTANCE2 ) )
-  {
-    deltaRot1 = odoTrans.theta();
-    deltaTrans = 0.0;
-    deltaRot2 = 0.0;
-  }
-  else if ( backwardMove )
-  {
-    deltaRot1 = atan2 ( ry - cy, rx - cx ) - rt;
-    deltaTrans = - distance;
-    deltaRot2 = ct - rt - deltaRot1;
-  }
-  else
-  {
-    deltaRot1 = atan2 ( odoTrans.y(), odoTrans.x() ) - rt;
-    deltaTrans = distance;
-    deltaRot2 = ct - rt - deltaRot1;
-  }
-
-  while ( deltaRot1 >= M_PI ) deltaRot1 -= M_2PI;
-  while ( deltaRot1 < -M_PI ) deltaRot1 += M_2PI;
-  while ( deltaRot2 >= M_PI ) deltaRot2 -= M_2PI;
-  while ( deltaRot2 < -M_PI ) deltaRot2 += M_2PI;
-
-  // always leave one particle with pure displacement
-  SlamParticle* particle = m_CurrentList[0];
-  // get stored pose
-  float robotX, robotY, robotTheta;
-  particle->getRobotPose ( robotX, robotY, robotTheta );
-  Pose pose ( robotX, robotY, robotTheta );
-  // move pose
-  float posX = pose.x() + deltaTrans * cos ( pose.theta() + deltaRot1 );
-  float posY = pose.y() + deltaTrans * sin ( pose.theta() + deltaRot1 );
-  float theta  = pose.theta() + deltaRot1 + deltaRot2;
-  while ( theta > M_PI ) theta -= M_2PI;
-  while ( theta <= -M_PI ) theta += M_2PI;
-  // save new pose
-  particle->setRobotPose ( posX, posY, theta );
-  for ( int i = 1; i < m_ParticleNum; i++ )
-  {
-    SlamParticle* particle = m_CurrentList[i];
-    // get stored pose
-    float robotX, robotY, robotTheta;
-    particle->getRobotPose ( robotX, robotY, robotTheta );
-    Pose pose ( robotX, robotY, robotTheta );
-    // move pose
-    float estDeltaRot1 = deltaRot1 - randomGauss ( m_Alpha1 * fabs ( deltaRot1 ) + m_Alpha2 * deltaTrans );
-    float estDeltaTrans = deltaTrans - randomGauss ( m_Alpha3 * deltaTrans + m_Alpha4 * ( fabs ( deltaRot1 ) + fabs ( deltaRot2 ) ) );
-    float estDeltaRot2 = deltaRot2 - randomGauss ( m_Alpha1 * fabs ( deltaRot2 ) + m_Alpha2 * deltaTrans );
-
-    float posX = pose.x() + estDeltaTrans * cos ( pose.theta() + estDeltaRot1 ) + randomGauss ( m_Alpha5 * fabs ( estDeltaRot1 + estDeltaRot2 ) );
-    float posY = pose.y() + estDeltaTrans * sin ( pose.theta() + estDeltaRot1 ) + randomGauss ( m_Alpha5 * fabs ( estDeltaRot1 + estDeltaRot2 ) );
-    float theta  = pose.theta() + estDeltaRot1 + estDeltaRot2;
-
-    // save new pose
-    while ( theta > M_PI ) theta -= M_2PI;
-    while ( theta <= -M_PI ) theta += M_2PI;
-
-    particle->setRobotPose ( posX, posY, theta );
-  }
-}
-
-
-void SlamFilter::measure()
-{
-  if ( m_OccupancyMap )
-  {
-    m_MeasurePoints = m_OccupancyMap->getMeasurePoints ( m_CurrentLaserData );
-
-    for ( int i = 0; i < m_ParticleNum; i++ )
-    {
-      SlamParticle* particle = m_CurrentList[i];
-      if ( !particle )
-      {
-        ROS_ERROR_STREAM("ERROR: Particle is NULL-pointer!");
-      }
-      else
-      {
-        // calculate weights
-        float robotX, robotY, robotTheta;
-        particle->getRobotPose ( robotX, robotY, robotTheta );
-        Pose pose ( robotX, robotY, robotTheta );
-        float weight = m_OccupancyMap->computeScore ( pose, m_MeasurePoints );
-        particle->setWeight ( weight );
-      }
-    }
-  }
-  m_EffectiveParticleNum = getEffectiveParticleNum2();
-
-}
-
-void SlamFilter::updateMap()
-{
-  getLikeliestPose(); //call to trigger tf broadcast
-  m_OccupancyMap->insertLaserData ( m_CurrentLaserData );
-}
-
-void SlamFilter::printParticles() const
-{
-  cout << endl << "### PARTICLE LIST ###" << endl;
-  cout << right << fixed;
-  cout.width ( 5 );
-  for ( int i = 0; i < m_ParticleNum; i++ )
-  {
-    SlamParticle* p_particle = m_CurrentList[i];
-    if ( p_particle )
-    {
-      float robotX, robotY, robotTheta;
-      p_particle->getRobotPose ( robotX, robotY, robotTheta );
-      cout << "Particle " << i << ": (" << robotX << "," << robotY << "," << robotTheta * 180.0 / M_PI << "), weight:\t" << p_particle->getWeight() << endl;
-    }
-  }
-  cout << "### END OF LIST ###" << endl;
-}
-
-
-void SlamFilter::reduceParticleNumber ( int newParticleNum )
-{
-  if ( newParticleNum < m_ParticleNum )
-  {
-
-    SlamParticle** newCurrentList = new SlamParticle*[newParticleNum];
-    SlamParticle** newLastList = new SlamParticle*[newParticleNum];
-
-    for ( int i = 0; i < newParticleNum; i++ )
-    {
-      newCurrentList[i] = m_CurrentList[i];
-      newLastList[i] = m_LastList[i];
-    }
-
-    for ( int i = newParticleNum + 1; i < m_ParticleNum; i++ )
-    {
-      delete m_CurrentList[i];
-      delete m_LastList[i];
-    }
-    delete[] m_CurrentList;
-    delete[] m_LastList;
-
-    m_CurrentList = newCurrentList;
-    m_LastList = newLastList;
-
-    m_ParticleNum = newParticleNum;
-    normalize();
-  }
-}
-
-Pose SlamFilter::getLikeliestPose() const
-{
-  float percentage = 3;
-  int numParticles = static_cast<int> ( percentage / 100 * m_ParticleNum );
-  if ( 0 == numParticles ) numParticles = 1;
-  float sumX = 0, sumY = 0, sumDirX = 0, sumDirY = 0;
-  for ( int i = 0; i < numParticles; i++ )
-  {
-    float robotX, robotY, robotTheta;
-    SlamParticle* particle = m_CurrentList[i];
-    particle->getRobotPose ( robotX, robotY, robotTheta );
-    sumX += robotX;
-    sumY += robotY;
-    // calculate sum of vectors in unit circle
-    sumDirX += cos ( robotTheta );
-    sumDirY += sin ( robotTheta );
-  }
-  float meanTheta = atan2 ( sumDirY, sumDirX );
-  //broadcast transform map -> base_link
-  tf::Transform transform(tf::createQuaternionFromYaw(meanTheta),
-                          tf::Vector3(sumX / numParticles, sumY / numParticles, 0.0));
-  tf::TransformBroadcaster tfBroadcaster;
-  tfBroadcaster.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "map", "base_link"));
-  return Pose ( sumX / numParticles, sumY / numParticles, meanTheta );
-}
-
-OccupancyMap* SlamFilter::getLikeliestMap() const
-{
-  return m_OccupancyMap;
-}
-
-void SlamFilter::getPoseVariances ( int particleNum, float& poseVarianceX, float& poseVarianceY )
-{
-
-  // the particles of m_CurrentList are sorted by their weights
-  if ( particleNum > m_ParticleNum || particleNum <= 0 )
-  {
-    particleNum = m_ParticleNum;
-  }
-  // calculate average pose
-  float averagePoseX = 0;
-  float averagePoseY = 0;
-  float robotX = 0.0;
-  float robotY = 0.0;
-  float robotTheta = 0.0;
-  for ( int i = 0; i < particleNum; i++ )
-  {
-    m_CurrentList[i]->getRobotPose ( robotX, robotY, robotTheta );
-    averagePoseX += robotX;
-    averagePoseY += robotY;
-  }
-  averagePoseX /= particleNum;
-  averagePoseY /= particleNum;
-
-  // calculate standard deviation of pose
-  poseVarianceX = 0.0;
-  poseVarianceY = 0.0;
-  for ( int i = 0; i < particleNum; i++ )
-  {
-    m_CurrentList[i]->getRobotPose ( robotX, robotY, robotTheta );
-    poseVarianceX += ( averagePoseX - robotX ) * ( averagePoseX - robotX );
-    poseVarianceY += ( averagePoseY - robotY ) * ( averagePoseY - robotY );
-  }
-  poseVarianceX /= particleNum;
-  poseVarianceY /= particleNum;
-}
-
-double SlamFilter::evaluateByContrast()
-{
-  return m_OccupancyMap->evaluateByContrast();
-}
-
-void SlamFilter::applyMasking(const nav_msgs::OccupancyGrid::ConstPtr &msg)
-{
-    m_OccupancyMap->applyMasking(msg);
-}
diff --git a/homer_mapping/src/ParticleFilter/SlamFilter.h b/homer_mapping/src/ParticleFilter/SlamFilter.h
deleted file mode 100644
index f8d96901..00000000
--- a/homer_mapping/src/ParticleFilter/SlamFilter.h
+++ /dev/null
@@ -1,314 +0,0 @@
-#ifndef SLAMFILTER_H
-#define SLAMFILTER_H
-
-#include <vector>
-#include "ParticleFilter.h"
-#include "SlamParticle.h"
-#include "Math/Pose.h"
-#include "../OccupancyMap/OccupancyMap.h"
-
-#include "sensor_msgs/LaserScan.h"
-
-class OccupancyMap;
-
-/**
- * @class SlamFilter
- *
- * @author Malte Knauf, Stephan Wirth, Susanne Maur
- *
- * @brief This class is used to determine the robot's most likely pose with given map and given laser data.
- *
- * A particle filter is a descrete method to describe and compute with a probability distribution.
- * This particle filter uses an occupancy map to determine the probability of robot states.
- * The robot states are stored in a particle together with their weight @see SlamParticle.
- *
- * @see SlamParticle
- * @see ParticleFilter
- * @see OccupancyMap
- */
-class SlamFilter : public ParticleFilter<SlamParticle> {
-
-  public:
-
-   /**
-     * This constructor initializes the random number generator and sets the member variables to the given values.
-     * @param particleNum Number of particles to use.
-     */
-    SlamFilter(int particleNum);
-
-    /// @brief copy constructor
-    SlamFilter( SlamFilter& slamFilter );
-
-    /**
-     * The destructor releases the OccupancyMap and the particles.
-     */
-    ~SlamFilter();
-
-    /**
-     * This method runs the filter routine.
-     * The given odometry measurement is used as movement hypothesis, the laserData-vector is used
-     * as measurement and is used to weight the particles.
-     * @param currentPoseOdometry Odometry data of time t.
-     * @param laserData msg containing the laser measurement.
-     * @param measurementTime Time stamp of the measurement.
-     * @param filterDurationTime Returns the time that the filtering needed
-     */
-    void filter(Pose currentPoseOdometry, sensor_msgs::LaserScanConstPtr laserData, ros::Time measurementTime,
-                ros::Duration  &filterDuration);
-
-    /**
-     * @return The Pose of the most important particle (particle with highest weight).
-     */
-    Pose getLikeliestPose() const;
-
-    /**
-     * This method can be used to retrieve the most likely map that is stored by the particle filter.
-     * @return Pointer to the most likely occupancy map.
-     */
-    OccupancyMap* getLikeliestMap() const;
-
-    /**
-     * This function prints out the list of particles to stdout via cout.
-     */
-    void printParticles() const;
-    
-    void resetHigh();
-
-    /**
-     * Computes and sets the new value for m_Alpha1.
-     * @param percent Rotation error while rotating (see class constructor for details)
-     */
-    void setRotationErrorRotating(float percent);
-
-    /**
-     * Computes and sets the new value for m_Alpha2.
-     * @param degreesPerMeter Rotation error while translating (see class constructor for details)
-     */
-    void setRotationErrorTranslating(float degreesPerMeter);
-
-    /**
-     * Computes and sets the new value for m_Alpha3.
-     * @param percent Translation error while translating (see class constructor for details)
-     */
-    void setTranslationErrorTranslating(float percent);
-
-    /**
-     * Computes and sets the new value for m_Alpha4.
-     * @param  mPerDegree Translation error while rotating (see class constructor for details)
-     */
-    void setTranslationErrorRotating(float mPerDegree);
-
-    /**
-     * Computes and sets the new value for m_Alpha5.
-     * @param  mPerDegree Move jitter while turning (see class constructor for details)
-     */
-    void setMoveJitterWhileTurning(float mPerDegree);
-
-    /**
-     * Sets a new minimal size of a cluster of scan points which is considered in scan matching.
-     * @param  clusterSize Minimal size of a cluster in mm of scan points which is considered in scan matching.
-     */
-    void setScanMatchingClusterSize(float clusterSize);
-
-    /**
-     * Sets whether the map is updated or just used for self-localization.
-     * @param doMapping True if robot shall do mapping, false otherwise.
-     */
-    void setMapping(bool doMapping);
-
-    /**
-     * Deletes the current occupancy map and copies a new one into the system.
-     * @param occupancyMap The occupancy map to load into the system (is being copied)
-     */
-    void setOccupancyMap(OccupancyMap* occupancyMap);
-
-    /**
-     * Sets the robot pose in the current occupancy map.
-     * @param Robot pose.
-     * @param scatterVariance if not equal to 0 the poses are equally scattered around the pose
-     */
-    void setRobotPose(Pose pose, double scatterVarXY=0.0, double scatterVarTheta=0.0);
-
-    /**
-     * @return Vector of current particle poses. The vector is sorted according to the weights of the
-     * particles. The pose of the particle with the highest value is the first element of the vector.
-     */
-    std::vector<Pose>* getParticlePoses() const;
-
-    /**
-    * @return vector of all particles
-    */
-    std::vector<SlamParticle*>* getParticles() const;
-
-    /**
-     * @return Vector of current particle weights. The vector is sorted by weight, highest weight first.
-     */
-    std::vector<float> getParticleWeights() const;
-
-    /**
-     * Calculates and returns the variance of the current likeliest particle poses.
-     * The orientation of the particle is neglected.
-     * @param The number of treated particles.
-     * @param[out] poseVarianceX The variance of particle poses in x direction.
-     * @param[out] poseVarianceY The variance of particle poses in y direction.
-     */
-    void getPoseVariances(int particleNum, float& poseVarianceX, float& poseVarianceY);
-
-    /**
-     * This method reduces the number of particles used in this SlamFilter to the given value.
-     * @param newParticleNumber The new number of particles
-     */
-    void reduceParticleNumber(int newParticleNumber);
-
-    /**
-     * This method returns the contrast of the occupancy grid
-     * @return Contrast value from 0 (no contrast) to 1 (max. contrast) of the map
-     */
-    double evaluateByContrast();
-
-    /**
-     * This method passes a masking map to to the underlying occupancy map
-     */
-    void applyMasking(const nav_msgs::OccupancyGrid::ConstPtr &msg);
-
-
-  private:
-
-    /**
-     * This method filter outliers in the given laser scan
-     * @param rawData the laser scan to check
-     * @param maxDiff maximal difference between two adjacent ranges
-     * @return filtered scan without outliers
-     */
-    vector<float> filterOutliers(sensor_msgs::LaserScanConstPtr rawData, float maxDiff );
-
-    /**
-     * This method generates Gauss-distributed random variables with the given variance. The computation
-     * method is the Polar Method that is described in the book "A First Course on Probability" by Sheldon Ross.
-     * @param variance The variance for the Gauss-distribution that is used to generate the random variable.
-     * @return A random variable that is N(0, variance) distributed.
-     */
-    double randomGauss(float variance = 1.0) const;
-
-    /**
-     * This method drifts the particles according to the last two odometry readings (time t-1 and time t).
-     */
-    void drift();
-
-    /**
-     * This method weightens each particle according to the given laser measurement in m_LaserData.
-     */
-    void measure();
-
-    /**
-     * This method updates the map by inserting the current laser measurement at the pose of the likeliest particle.
-     */
-    void updateMap();
-
-    /**
-     * For weightening the particles, the filter needs a map.
-     * This variable holds a pointer to a map.
-     * @see OccupancyMap
-     */
-    OccupancyMap* m_OccupancyMap;
-
-    /**
-     * threshold values for when the map will be updated.
-     * The map is only updated when the robot has turned a minimal angle (m_UpdateMinMoveAngle in radiants),
-     * has moved a minimal distance (m_UpdateMinMoveDistance in m) or a maximal time has passed (m_MaxUpdateInterval)
-     */
-    float m_UpdateMinMoveAngle;
-    float m_UpdateMinMoveDistance;
-    ros::Duration m_MaxUpdateInterval;
-
-    /**
-     * This variable holds the rotation error that the robot makes while it is rotating.
-     * Has to be given in percent. Example: robot makes errors of 3 degrees while making a 60 degrees
-     * move -> error is 5% -> rotationErrorRotating = 5)
-     */
-    float m_Alpha1;
-
-    /**
-     * This variable holds the rotation error that the robot makes while it is translating
-     * (moving forward or backwards). Has to be given in degrees per meter.
-     */
-    float m_Alpha2;
-
-    /**
-     * This variable holds the translation error that the robot makes while it is translating.
-     * Has to be given in percent.
-     */
-    float m_Alpha3;
-
-    /**
-     * This variable holds the translation error that the robot makes while it is rotating.
-     * This error only carries weight, if a translation es performed at the same time.
-     * See also m_Alpha5.
-     * Has to be given in milimeters per degree. Example: Robot makes a turn of 10 degrees and moves its
-     * center unintentional 15 mm. -> translationErrorRotating = 15.0 / 10.0 = 1.5
-     */
-    float m_Alpha4;
-
-    /**
-     * This variable holds a move jitter that is considered if the robot is turning.
-     * Has to be given in milimeters per degree.
-     */
-    float m_Alpha5;
-
-    /**
-     * The maximal rotation if mapping is performed. If the rotation is bigger, mapping is interrupted.
-     * This value may depend on the computing power, because it is influenced by the size of time intervals of mapping.
-     */
-    float m_MaxRotationPerSecond;
-
-    /**
-     * Last laser data.
-     */
-    sensor_msgs::LaserScanPtr m_CurrentLaserData;
-
-    /**
-     * Last two odometry measurements.
-     */
-    Pose m_ReferencePoseOdometry;
-    Pose m_CurrentPoseOdometry;
-
-    /**
-     * Time stamp of the last sensor measurement.
-     */
-    ros::Time m_ReferenceMeasurementTime;
-
-    /**
-     * True if it is the first run of SlamFilter, false otherwise.
-     */
-    bool m_FirstRun;
-
-    /**
-     * This variabe is true, if the SlamFilter is used for mapping and updates the map,
-     * false if it is just used for self-localization.
-     */
-    bool m_DoMapping;
-
-    /** Points used in last measure() step */
-    vector<MeasurePoint> m_MeasurePoints;
-
-    /// Pose of robot during last map update
-    Pose m_LastUpdatePose;
-
-    /**
-     *  Time stamp of the last particle filter step
-     */
-    ros::Time m_LastUpdateTime;
-
-    /**
-     * Calculates the square of given input f
-     * @param f input
-     * @return square of input
-     */
-    template<class T>
-    T sqr(T f)
-    {
-        return f * f;
-    }
-};
-#endif
-
diff --git a/homer_mapping/src/ParticleFilter/SlamParticle.cpp b/homer_mapping/src/ParticleFilter/SlamParticle.cpp
deleted file mode 100644
index 7b501f0c..00000000
--- a/homer_mapping/src/ParticleFilter/SlamParticle.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-#include "SlamParticle.h"
-
-SlamParticle::SlamParticle(float weight, float robotX, float robotY, float robotTheta) : Particle(weight) {
-  m_RobotPositionX = robotX;
-  m_RobotPositionY = robotY;
-  m_RobotOrientation = robotTheta;
-}
-
-SlamParticle::SlamParticle( SlamParticle& slamParticle )
-{
-  m_RobotPositionX = slamParticle.m_RobotPositionX;
-  m_RobotPositionY = slamParticle.m_RobotPositionY;
-  m_RobotOrientation = slamParticle.m_RobotOrientation;
-}
-
-SlamParticle::~SlamParticle() {
-}
-
-void SlamParticle::setRobotPose(float robotX, float robotY, float robotTheta) {
-  m_RobotPositionX = robotX;
-  m_RobotPositionY = robotY;
-  m_RobotOrientation = robotTheta;
-}
-
-void SlamParticle::getRobotPose(float& robotX, float& robotY, float& robotTheta) {
-  robotX = m_RobotPositionX;
-  robotY = m_RobotPositionY;
-  robotTheta = m_RobotOrientation;
-}
-
diff --git a/homer_mapping/src/ParticleFilter/SlamParticle.h b/homer_mapping/src/ParticleFilter/SlamParticle.h
deleted file mode 100644
index 71da4a81..00000000
--- a/homer_mapping/src/ParticleFilter/SlamParticle.h
+++ /dev/null
@@ -1,72 +0,0 @@
-#ifndef SLAMPARTICLE_H
-#define SLAMPARTICLE_H
-
-#include <iostream>
-#include <fstream>
-
-#include "Particle.h"
-
-/**
- * @class SlamParticle
- *
- * @author Malte Knauf, Stephan Wirth
- *
- * @brief This class defines a particle for the SlamFilter.
- *
- * This particle contains a weight (inherited from base class) and a Pose (position + orientation).
- * The Pose describes a possible position and orientation of the robot.
- *
- * @see SlamFilter
- * @see Particle
- */
-class SlamParticle : public Particle
-{
-
-  public:
-    /**
-     * This constructor assigns the given weight to the member m_Weight.
-     * @param weight The weight of the particle.
-     * @param robotX X-Position of the robot (world coordinates in m).
-     * @param robotY Y-Position of the robot (world coordinates in m).
-     * @param robotTheta Orientation of the robot (radiants).
-     */
-    SlamParticle ( float weight = 1.0, float robotX = 0.0, float robotY = 0.0, float robotTheta = 0.0 );
-
-    ///@brief copy contructor
-    SlamParticle ( SlamParticle& slamParticle );
-
-    /**
-     * The destructor does nothing so far.
-     */
-    ~SlamParticle();
-
-    /**
-     * Sets the three members m_RobotPositionX, m_RobotPositionY, m_RobotOrientation.
-     * @param robotX X-Position of the robot (world coordinates in m).
-     * @param robotY Y-Position of the robot (world coordinates in m).
-     * @param robotTheta Orientation of the robot (radiants).
-     */
-    void setRobotPose ( float robotX, float robotY, float robotTheta );
-
-    /**
-     * Returns the content of the three members m_RobotPositionX, m_RobotPositionY, m_RobotOrientation.
-     * @param[out] robotX X-Position of the robot (world coordinates in m).
-     * @param[out] robotY Y-Position of the robot (world coordinates in m).
-     * @param[out] robotTheta Orientation of the robot (radiants).
-     */
-    void getRobotPose ( float& robotX, float& robotY, float& robotTheta );
-
-
-  private:
-
-    /**
-     * These members store the pose of the robot.
-     */
-    float m_RobotPositionX;
-    float m_RobotPositionY;
-    float m_RobotOrientation;
-
-};
-
-#endif
-
diff --git a/homer_mapping/src/slam_node.cpp b/homer_mapping/src/slam_node.cpp
deleted file mode 100644
index 6d196437..00000000
--- a/homer_mapping/src/slam_node.cpp
+++ /dev/null
@@ -1,318 +0,0 @@
-#include <sstream>
-#include <vector>
-#include <iostream>
-#include <fstream>
-#include <sstream>
-#include <cmath>
-#include <stdlib.h>
-
-#include "slam_node.h"
-
-//receive:
-#include "sensor_msgs/LaserScan.h"
-#include "nav_msgs/Odometry.h"
-#include "nav_msgs/OccupancyGrid.h"
-#include "tf/tf.h"
-
-#include "tools/loadRosConfig.h"
-
-#include "ParticleFilter/SlamFilter.h"
-#include "ParticleFilter/HyperSlamFilter.h"
-#include "Math/Box2D.h"
-#include "OccupancyMap/OccupancyMap.h"
-
-SlamNode::SlamNode(ros::NodeHandle* nh)
-  : m_HyperSlamFilter( 0 )
-{
-    init();
-
-    // subscribe to topics
-    m_LaserScanSubscriber = nh->subscribe("/scan", 1, &SlamNode::callbackLaserScan, this);
-    m_OdometrySubscriber = nh->subscribe<nav_msgs::Odometry>("/odom", 1, &SlamNode::callbackOdometry, this);
-    m_UserDefPoseSubscriber = nh->subscribe<geometry_msgs::Pose>("/homer_mapping/userdef_pose", 1, &SlamNode::callbackUserDefPose, this);
-    m_DoMappingSubscriber = nh->subscribe<std_msgs::Bool>("/homer_mapping/do_mapping", 1, &SlamNode::callbackDoMapping, this);
-    m_ResetMapSubscriber = nh->subscribe<std_msgs::Empty>("/map_manager/reset_maps", 1, &SlamNode::callbackResetMap, this);
-    m_LoadMapSubscriber = nh->subscribe<nav_msgs::OccupancyGrid>("/map_manager/loaded_map", 1, &SlamNode::callbackLoadedMap, this);
-    m_MaskingSubscriber = nh->subscribe<nav_msgs::OccupancyGrid>("/map_manager/mask_slam", 1, &SlamNode::callbackMasking, this);
-    m_ResetHighSubscriber = nh->subscribe<std_msgs::Empty>("/map_manager/reset_high", 1, &SlamNode::callbackResetHigh, this);
-
-	m_InitialPoseSubscriber = nh->subscribe<geometry_msgs::PoseWithCovarianceStamped>("/initialpose", 1, &SlamNode::callbackInitialPose, this);
-
-    // advertise topics
-    m_PoseStampedPublisher = nh->advertise<geometry_msgs::PoseStamped>("/pose", 1);
-    m_SLAMMapPublisher = nh->advertise<nav_msgs::OccupancyGrid>("/homer_mapping/slam_map", 1);
-}
-
-void SlamNode::init()
-{
-    double waitTime;
-    loadConfigValue("/particlefilter/wait_time", waitTime);
-    m_WaitDuration = ros::Duration(waitTime);
-    loadConfigValue("/selflocalization/scatter_var_xy", m_ScatterVarXY);
-    loadConfigValue("/selflocalization/scatter_var_theta", m_ScatterVarTheta);
-
-    m_DoMapping = true;
-
-    int particleNum;
-    loadConfigValue("/particlefilter/particle_num", particleNum);
-    int particleFilterNum;
-    loadConfigValue("/particlefilter/hyper_slamfilter/particlefilter_num", particleFilterNum);
-    m_HyperSlamFilter = new HyperSlamFilter ( particleFilterNum, particleNum );
-
-    m_ReferenceOdometryTime = ros::Time(0);
-    m_LaserDataTime = ros::Time(0);;
-
-    m_LastLaserMessageId = 0;
-    m_LastMapSendTime = ros::Time(0);
-    m_LastPositionSendTime = ros::Time(0);
-    m_LastMappingTime = ros::Time(0);
-}
-
-SlamNode::~SlamNode()
-{
-  delete m_HyperSlamFilter;
-}
-
-void SlamNode::processMeasurements ( ros::Time odoTime, Pose currentOdometryPose )
-{
-  // laserscan in between current odometry reading and m_ReferenceOdometry
-  // -> calculate pose of robot during laser scan
-  ros::Duration d1 = m_LaserDataTime - m_ReferenceOdometryTime;
-  ros::Duration d2 = odoTime - m_ReferenceOdometryTime;
-
-  float timeFactor;
-  if(d1.toSec()==0.0)
-      timeFactor = 0.0f;
-  else if(d2.toSec()==0.0)
-      timeFactor = 1.0f;
-  else
-      timeFactor = d1.toSec() / d2.toSec();
-  ros::Duration duration = ros::Duration(0);
-
-  Pose interpolatedPose = m_ReferenceOdometryPose.interpolate ( currentOdometryPose, timeFactor );
-  m_HyperSlamFilter->filter( interpolatedPose, m_LastLaserData, m_LaserDataTime, duration);
-}
-
-void SlamNode::resetMaps()
-{
-  ROS_INFO( "Resetting maps.." );
-
-  delete m_HyperSlamFilter;
-  m_HyperSlamFilter = 0;
-  init();
-
-  sendMapDataMessage();
-  sendPositionDataMessage();
-}
-
-void SlamNode::callbackResetHigh(const std_msgs::Empty::ConstPtr& msg)
-{
-	m_HyperSlamFilter->resetHigh();
-
-}
-
-
-void SlamNode::sendPositionDataMessage()
-{
-  Pose pose = m_HyperSlamFilter->getBestSlamFilter()->getLikeliestPose();
-
-  geometry_msgs::PoseStamped poseMsg;
-  //header
-  poseMsg.header.stamp = ros::Time::now();
-  poseMsg.header.frame_id = "map";
-
-  //position and orientation
-  poseMsg.pose.position.x = pose.x();
-  poseMsg.pose.position.y = pose.y();
-  poseMsg.pose.position.z = 0.0;
-  tf::Quaternion quatTF = tf::createQuaternionFromYaw(pose.theta());
-  geometry_msgs::Quaternion quatMsg;
-  tf::quaternionTFToMsg(quatTF, quatMsg); //conversion from tf::Quaternion to geometry_msgs::Quaternion
-  poseMsg.pose.orientation = quatMsg;
-  m_PoseStampedPublisher.publish(poseMsg);
-
-  //broadcast transform map -> base_link
-  tf::Transform transform(quatTF,
-                          tf::Vector3(pose.x(), pose.y(), 0.0));
-  m_tfBroadcaster.sendTransform(tf::StampedTransform(transform, poseMsg.header.stamp, "map", "base_link"));
-  m_LastLaserMessageId = 0;
-}
-
-void SlamNode::sendMapDataMessage()
-{
-  std::vector<int8_t> mapData;
-  int width, height;
-  float resolution;
-
-  OccupancyMap* occMap = m_HyperSlamFilter->getBestSlamFilter()->getLikeliestMap();
-  occMap->getOccupancyProbabilityImage (mapData, width, height, resolution);
-
-  if ( width != height )
-  {
-    ROS_ERROR_STREAM("ERROR: Map is not quadratic! can not send map!");
-  }
-  else
-  {
-    nav_msgs::OccupancyGrid mapMsg;
-    std_msgs::Header header;
-    header.stamp = ros::Time::now();
-    header.frame_id = "map";
-    mapMsg.header = header;
-    nav_msgs::MapMetaData mapMetaData;
-    mapMetaData.width = width;
-    mapMetaData.height = height;
-    mapMetaData.resolution = resolution;
-    mapMetaData.origin.position.x = -height*resolution/2;
-    mapMetaData.origin.position.y = -width*resolution/2;
-    mapMetaData.origin.orientation.w = 1.0;
-    mapMetaData.origin.orientation.x = 0.0;
-    mapMetaData.origin.orientation.y = 0.0;
-    mapMetaData.origin.orientation.z = 0.0;
-    mapMsg.info = mapMetaData;
-    mapMsg.data = mapData;
-
-    m_SLAMMapPublisher.publish(mapMsg);
-  }
-}
-
-void SlamNode::callbackUserDefPose( const geometry_msgs::Pose::ConstPtr& msg )
-{
-    Pose userdef_pose(msg->position.x, msg->position.y, tf::getYaw(msg->orientation));
-    m_HyperSlamFilter->setRobotPose( userdef_pose, m_ScatterVarXY, m_ScatterVarTheta );
-}
-
-void SlamNode::callbackLaserScan(const sensor_msgs::LaserScan::ConstPtr& msg)
-{
-    m_LaserDataTime = ros::Time::now();//msg->header.stamp; TODO use msg stamp
-    m_LastLaserData = msg;
-}
-
-void SlamNode::callbackOdometry( const nav_msgs::Odometry::ConstPtr& msg) {
-    ros::Time currentOdometryTime = ros::Time::now();//msg->header.stamp; TODO use msg stamp once cu2wd node publishes time in odometry msg
-
-    float odoX = msg->pose.pose.position.x;
-    float odoY = msg->pose.pose.position.y;
-    geometry_msgs::Quaternion quat = msg->pose.pose.orientation;
-    float odoTheta = tf::getYaw(quat);
-
-    Pose currentOdometryPose ( odoX, odoY, odoTheta );
-
-    // check if we have a laserscan in between two odometry readings (or at the same time)
-    bool mappingPossible = ( currentOdometryTime - m_LastMappingTime > m_WaitDuration ) &&
-        ( !m_ReferenceOdometryTime.isZero()) &&
-        ( m_LaserDataTime >= m_ReferenceOdometryTime ) &&
-        ( currentOdometryTime >= m_LaserDataTime );
-
-    if ( mappingPossible )
-    {
-      ros::Time startTime = ros::Time::now();
-      processMeasurements ( currentOdometryTime, currentOdometryPose );
-      ros::Time finishTime = ros::Time::now();
-
-      // send map max. every 500 ms
-      if ( (finishTime - m_LastMapSendTime).toSec() > 0.5 )
-      {
-        sendMapDataMessage();
-        m_LastMapSendTime = finishTime;
-      }
-      sendPositionDataMessage();
-      m_LastPositionSendTime=finishTime;
-      m_LastMappingTime=currentOdometryTime;
-
-      ROS_DEBUG_STREAM( "Pos. data delay: " << (finishTime - startTime).toSec() << "s" );
-      ROS_DEBUG_STREAM("Map send Interval: " << ( finishTime - m_LastPositionSendTime ).toSec() << "s" );
-    }
-    m_ReferenceOdometryPose = currentOdometryPose;
-    m_ReferenceOdometryTime = currentOdometryTime;
-}
-
-void SlamNode::callbackDoMapping(const std_msgs::Bool::ConstPtr &msg)
-{
-    m_DoMapping = msg->data;
-    m_HyperSlamFilter->setMapping ( m_DoMapping );
-    ROS_INFO_STREAM( "Do mapping is set to " << ( m_DoMapping ) );
-}
-
-void SlamNode::callbackResetMap(const std_msgs::Empty::ConstPtr &msg)
-{
-    resetMaps();
-}
-
-void SlamNode::callbackLoadedMap(const nav_msgs::OccupancyGrid::ConstPtr &msg)
-{
-    float res = msg->info.resolution;
-    int height = msg->info.height; // cell size
-    int width = msg->info.width; //cell size
-    if(height!=width) {
-        ROS_ERROR("Height != width in loaded map");
-        return;
-    }
-
-    //convert map vector from ros format to robbie probability array
-    float* map = new float[msg->data.size()];
-     //generate exploredRegion
-     int minX = INT_MIN;
-     int minY = INT_MIN;
-     int maxX = INT_MAX;
-     int maxY = INT_MAX;
-     for(size_t y = 0; y < msg->info.height; y++)
-     {
-         int yOffset = msg->info.width * y;
-         for(size_t x = 0; x < msg->info.width; x++)
-         {
-             int i = yOffset + x;
-             if(msg->data[i] == -1 )
-                 map[i] = 0.5;
-             else
-                 map[i] = msg->data[i]/100.0;
-
-             if(map[i]!=0.5) {
-                 if(minX==INT_MIN || minX > (int)x)
-                     minX = (int)x;
-                 if(minY==INT_MIN || minY > (int)y)
-                     minY = (int)y;
-                 if(maxX==INT_MAX || maxX < (int)x)
-                     maxX = (int)x;
-                 if(maxY==INT_MAX || maxY < (int)y)
-                     maxY = (int)y;
-             }
-         }
-     }
-     Box2D<int> exploredRegion = Box2D<int> ( minX, minY, maxX, maxY );
-     OccupancyMap* occMap = new OccupancyMap(map, msg->info.origin, res, width, exploredRegion);
-     m_HyperSlamFilter->setOccupancyMap( occMap );
-     m_HyperSlamFilter->setMapping( false ); //is this already done by gui message?
-     ROS_INFO_STREAM( "Replacing occupancy map" );
-}
-
-
-void SlamNode::callbackInitialPose(const geometry_msgs::PoseWithCovarianceStamped::ConstPtr& msg)
-{
-    Pose userdef_pose(msg->pose.pose.position.x, msg->pose.pose.position.y, tf::getYaw(msg->pose.pose.orientation));
-    m_HyperSlamFilter->setRobotPose( userdef_pose, m_ScatterVarXY, m_ScatterVarTheta );
-}
-
-void SlamNode::callbackMasking(const nav_msgs::OccupancyGrid::ConstPtr &msg)
-{
-    m_HyperSlamFilter->applyMasking(msg);
-}
-
-/**
- * @brief main function
- */
-int main(int argc, char** argv)
-{
-    ros::init(argc, argv, "homer_mapping");
-    ros::NodeHandle nh;
-
-    SlamNode slamNode(&nh);
-
-    ros::Rate loop_rate(12);
-    while (ros::ok())
-    {
-        ros::spinOnce();
-        loop_rate.sleep();
-    }
-    return 0;
-}
-
diff --git a/homer_mapping/src/slam_node.h b/homer_mapping/src/slam_node.h
deleted file mode 100644
index 803c5c4b..00000000
--- a/homer_mapping/src/slam_node.h
+++ /dev/null
@@ -1,186 +0,0 @@
-#ifndef SLAM_NODE_H
-#define SLAM_NODE_H
-
-#include <vector>
-#include <map>
-
-#include "Math/Pose.h"
-
-#include "tf/transform_broadcaster.h"
-
-#include "sensor_msgs/LaserScan.h"
-#include "nav_msgs/Odometry.h"
-#include "nav_msgs/OccupancyGrid.h"
-#include "geometry_msgs/Pose.h"
-#include "std_msgs/Empty.h"
-#include "std_msgs/Bool.h"
-#include "geometry_msgs/PoseWithCovarianceStamped.h"
-
-
-
-
-class OccupancyMap;
-class SlamFilter;
-class HyperSlamFilter;
-
-/**
- * @class SlamNode
- *
- * @author Malte Knauf, Stephan Wirth, Susanne Maur (RX), David Gossow (RX),
- *         Christian Fuchs (R12), Nicolai Wojke (R14), Susanne Thierfelder (R16)
- *
- *
- * @brief The Simultaneous localization and mapping module
- *
- * This module receives odometry and laser data and computes the
- * robot's position and a map out of this data. Then it sends a
- * geometry_msgs/PoseStamped and nav_msgs/OccupancyGrid message.
- */
-class SlamNode
-{
-
-public:
-
-    /**
-     * The constructor adds the message types and prepares the module for receiving them.
-     */
-    SlamNode(ros::NodeHandle *nh);
-
-    /**
-     * This method initializes the member variables.
-     */
-    virtual void init();
-
-    /**
-     * The destructor deletes the filter thread instance.
-     */
-    virtual ~SlamNode();
-
-private:
-
-    /**
-     * Callback methods for all incoming messages
-     */
-    void callbackLaserScan( const sensor_msgs::LaserScan::ConstPtr& msg );
-    void callbackOdometry( const nav_msgs::Odometry::ConstPtr& msg );
-    void callbackUserDefPose( const geometry_msgs::Pose::ConstPtr& msg );
-    void callbackDoMapping( const std_msgs::Bool::ConstPtr& msg );
-    void callbackResetMap( const std_msgs::Empty::ConstPtr& msg );
-    void callbackLoadedMap( const nav_msgs::OccupancyGrid::ConstPtr& msg );
-    void callbackMasking( const nav_msgs::OccupancyGrid::ConstPtr& msg );
-    void callbackResetHigh(const std_msgs::Empty::ConstPtr& msg);
-	void callbackInitialPose(const geometry_msgs::PoseWithCovarianceStamped::ConstPtr& msg);
-    /**
-     * This function resets the current maps to the initial state.
-     */
-    void resetMaps();
-
-    /**
-     * This function processes the current odometry data in combination with the
-     * last send odometry and laser informations to pass on corresponding data
-     * to the filter threads.
-     *
-     * @param odoTime timestamp of this odometry data
-     * @param currentOdometryPose the current odometry measurements of the robot
-     */
-    void processMeasurements(ros::Time odoTime, Pose currentOdometryPose);
-
-    /**
-     * This method retrieves the current map of the slam filter and sends a map
-     * data message containing the map.
-     */
-    void sendMapDataMessage();
-
-    /**
-     * This method gets the current position from the filter thread and sends it
-     * in a position data message.
-     */
-    void sendPositionDataMessage();
-
-    /**
-     * This variable stores the identification number of a GetPositionDataM.
-     * It is needed for a correct response message.
-     */
-    unsigned int m_LastLaserMessageId;
-
-    /**
-     * This variables stores the last odometry measurement as reference that is used
-     * to compute the pose of the robot during a specific laserscan.
-     */
-    Pose m_ReferenceOdometryPose;
-
-    /**
-     * This variable stores the time of the last odometry measurement as reference
-     * which is used to compute the pose of the robot during a specific laserscan.
-     */
-    ros::Time m_ReferenceOdometryTime;
-
-    /**
-     * This variable stores the time the last map message was sent to be able to
-     * compute the time for the next map send.
-     */
-    ros::Time m_LastMapSendTime;
-    ros::Time m_LastPositionSendTime;
-
-    /**
-     * This variable stores the last laser measurement.
-     */
-    sensor_msgs::LaserScanConstPtr m_LastLaserData;
-
-    /**
-     * This variable stores the time of last laser measurement.
-     */
-    ros::Time m_LaserDataTime;
-
-    /**
-     * time stamp of last particle filter step
-     */
-    ros::Time m_LastMappingTime;
-
-
-    /**
-     * This variable stores a pointer to the hyper slam filter
-     */
-    HyperSlamFilter* m_HyperSlamFilter;
-
-    /**
-     * Scatter variances in self localization.
-     */
-    double m_ScatterVarXY;
-    double m_ScatterVarTheta;
-
-    /**
-     * This variabe is true, if the slam algorithm is used for mapping and
-     * keeps updating the map, false otherwise.
-     */
-    bool m_DoMapping;
-
-    /**
-     * duration to wait between two particle filter steps
-     */
-    ros::Duration m_WaitDuration;
-
-    /**
-     * Broadcasts the transform map -> base_link
-     */
-    tf::TransformBroadcaster m_tfBroadcaster;
-
-    /**
-     * subscribers and publishers
-     */
-    ros::Subscriber m_LaserScanSubscriber;
-    ros::Subscriber m_OdometrySubscriber;
-    ros::Subscriber m_UserDefPoseSubscriber;
-    ros::Subscriber m_DoMappingSubscriber;
-    ros::Subscriber m_ResetMapSubscriber;
-    ros::Subscriber m_LoadMapSubscriber;
-    ros::Subscriber m_MaskingSubscriber;
-    ros::Subscriber m_ResetHighSubscriber;
-	ros::Subscriber m_InitialPoseSubscriber;
-
-    ros::Publisher m_PoseStampedPublisher;
-    ros::Publisher m_SLAMMapPublisher;
-
-};
-
-#endif
diff --git a/homer_nav_libs/CHANGELOG.rst b/homer_nav_libs/CHANGELOG.rst
deleted file mode 100644
index 3f72983e..00000000
--- a/homer_nav_libs/CHANGELOG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package homer_nav_libs
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.0.1 (2015-09-08)
-------------------
-* init
-* Contributors: Raphael Memmesheimer
diff --git a/homer_nav_libs/CMakeLists.txt b/homer_nav_libs/CMakeLists.txt
deleted file mode 100644
index 4cb9071a..00000000
--- a/homer_nav_libs/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(homer_nav_libs)
-
-find_package(catkin REQUIRED COMPONENTS
-  roscpp
-  geometry_msgs
-  tf
-  cmake_modules
-)
-
-find_package(Eigen REQUIRED)
-
-catkin_package(
-	INCLUDE_DIRS src
-	LIBRARIES Explorer SpeedControl MappingMath
-	CATKIN_DEPENDS  roscpp geometry_msgs tf
-	DEPENDS Eigen)
-
-
-include_directories(
-  src
-  ${catkin_INCLUDE_DIRS}
-  ${Eigen_INCLUDE_DIRS}
-  $ENV{HOMER_DIR}
-)
-
-add_subdirectory(src/Explorer)
-add_subdirectory(src/SpeedControl)
-add_subdirectory(src/Math)
diff --git a/homer_nav_libs/README.md b/homer_nav_libs/README.md
deleted file mode 100644
index 4c31e40e..00000000
--- a/homer_nav_libs/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# nav_libs
-
-## Known Issues / Todo's 
-
-Im Package nav_libs ist eine Kopie der Robbie-Bibliothek Math, umbenannt in MappingMath, die nur von homer_mapping benutzt werden soll, solange es keine vernünftige Alternative für die Pose gibt.
-
-## Introduction 
-
-Das Package nav_libs enthält einige Bibliotheken, die vom Package homer_mapping und nav_libs verwendet werden. Außerdem enthält es im Ordner tools die Header-Datei tools.h, die Funktionen zum Transformieren in verschiedene Koordinatenframes enthält. All diese Funktionen befinden sich im namespace "map_tools".
-
-* Die Bibliothek `Explorer` wird von homer_mapping und homer_navigation verwendet und enthält die Pfadplanungsalgorithmen A-Stern sowie die dafür benötigte Datenstruktur der GridMap.
-* Die Bibliothek `SpeedControl` wird von homer_navigation verwendet und  ist dafür zuständig abhängig von den aktuellen Laserdaten die höchstzulässige Geschwindigkeit zu berechnen.
-* Die Bibliothek `MappingMath` wird von homer_mapping verwendet und enthält die Datenstruktur Pose, in der die aktuelle Roboterposition innerhalb der Node gespeichert wird.
diff --git a/homer_nav_libs/package.xml b/homer_nav_libs/package.xml
deleted file mode 100644
index aba249bd..00000000
--- a/homer_nav_libs/package.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<package>
-  <name>homer_nav_libs</name>
-  <version>1.0.1</version>
-  <description>The nav_libs package</description>
-
-  <maintainer email="vseib@uni-koblenz.de">Viktor Seib</maintainer>
-  <author email="mknauf@uni-koblenz.de">Malte Knauf</author>
-  <license>GPLv3</license>
-
-  <buildtool_depend>catkin</buildtool_depend>
-  <build_depend>geometry_msgs</build_depend>
-  <build_depend>roscpp</build_depend>
-  <build_depend>tf</build_depend>
-  <run_depend>roscpp</run_depend>
-  <run_depend>geometry_msgs</run_depend>
-  <run_depend>tf</run_depend>
-
-</package>
diff --git a/homer_nav_libs/readme.pdf b/homer_nav_libs/readme.pdf
deleted file mode 100644
index 98fc92ccae14a8a818948ce4c73a8926f6ad2028..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 79468
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
z%0A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
THI2*M($K(wOI6j?-;E0ZaiSHe

diff --git a/homer_nav_libs/src/Explorer/CMakeLists.txt b/homer_nav_libs/src/Explorer/CMakeLists.txt
deleted file mode 100644
index 4c5aee03..00000000
--- a/homer_nav_libs/src/Explorer/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-set(Explorer_SRC
-  Explorer.cpp
-)
-
-add_library(Explorer ${Explorer_SRC})
diff --git a/homer_nav_libs/src/Explorer/Explorer.cpp b/homer_nav_libs/src/Explorer/Explorer.cpp
deleted file mode 100644
index 65a447f2..00000000
--- a/homer_nav_libs/src/Explorer/Explorer.cpp
+++ /dev/null
@@ -1,1426 +0,0 @@
-#include <cmath>
-#include <iostream>
-#include <queue>
-#include <sstream>
-
-#include "tools/tools.h"
-
-#include "Explorer.h"
-
-using namespace std;
-using namespace ExplorerConstants;
-
-Explorer::Explorer ( double minAllowedObstacleDistance, double maxAllowedObstacleDistance,
-             double minSafeObstacleDistance, double maxSafeObstacleDistance,
-             double safePathWeight, double frontierSafenessFactor, int unknownThreshold )
-{
-  ExplorerConstants::UNKNOWN = unknownThreshold;
-
-  m_MinAllowedObstacleDistance = minAllowedObstacleDistance;
-  m_MaxAllowedObstacleDistance = maxAllowedObstacleDistance;
-
-  m_MinSafeObstacleDistance = minSafeObstacleDistance;
-  m_MaxSafeObstacleDistance = maxSafeObstacleDistance;
-
-  m_SafePathWeight = safePathWeight;
-  m_FrontierSafenessFactor = frontierSafenessFactor;
-
-  m_OccupancyMap = 0;
-  m_ObstacleTransform = 0;
-  m_CostTransform = 0;
-  m_TargetMap = 0;
-  m_DrivingDistanceTransform = 0;
-  m_TargetDistanceTransform = 0;
-  m_PathTransform = 0;
-  m_ExplorationTransform = 0;
-  m_DesiredDistance = 0;
-}
-
-Explorer::~Explorer()
-{
-  releaseMaps();
-  releaseMap( m_OccupancyMap );
-}
-
-void Explorer::releaseMaps()
-{
-  releaseMap( m_TargetMap );
-  releaseMap( m_ObstacleTransform );
-  releaseMap( m_CostTransform );
-  releaseMap( m_DrivingDistanceTransform );
-  releaseMap( m_TargetDistanceTransform );
-  releaseMap( m_PathTransform );
-  releaseMap( m_ExplorationTransform );
-}
-
-// SETTERS ////////////////////////////////////////////////////////////////////////////////////////////////
-
-void Explorer::setUnknownThreshold(int unknownTresh)
-{
-    ExplorerConstants::UNKNOWN = unknownTresh;
-}
-
-void Explorer::setAllowedObstacleDistance ( double min, double max )
-{
-  m_MinAllowedObstacleDistance = min;
-  m_MaxAllowedObstacleDistance = max;
-  releaseMaps();
-}
-
-void Explorer::setSafeObstacleDistance ( double min, double max )
-{
-  m_MinSafeObstacleDistance = min;
-  m_MaxSafeObstacleDistance = max;
-  releaseMaps();
-}
-
-void Explorer::setSafePathWeight ( double weight )
-{
-  m_SafePathWeight = weight;
-  releaseMaps();
-}
-
-void Explorer::setFrontierSafenessFactor( double frontierSafenessFactor )
-{
-  m_FrontierSafenessFactor = frontierSafenessFactor;
-  releaseMaps();
-}
-
-void Explorer::setOccupancyMap ( int width, int height, geometry_msgs::Pose origin, int8_t* data )
-{
-  if ( !data ) {
-    ROS_ERROR( "Received 0-pointer." );
-    return;
-  }
-  releaseMaps();
-  releaseMap( m_OccupancyMap );
-  //m_OccupancyMap = new GridMap<unsigned char> ( width, height, data, exploredRegion );
-  m_OccupancyMap = new GridMap<int8_t> ( width, height, data );
-  m_Origin = origin;
-}
-
-
-void Explorer::updateObstacles(int width, int height, geometry_msgs::Pose origin, int8_t* mapData)
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-  if ( (width != m_OccupancyMap->width()) || (height != m_OccupancyMap->height()) ) {
-    ROS_ERROR_STREAM( "Wrong map size!" );
-    return;
-  }
-  for ( unsigned i=0; i<m_OccupancyMap->width()*m_OccupancyMap->height(); i++ )
-  {
-    int8_t* myMapData=m_OccupancyMap->getDirectAccess(0,0);
-    if ( myMapData[i] != UNKNOWN )
-    {
-      myMapData[i]=mapData[i];
-    }
-  }
-  releaseMaps();
-}
-
-void Explorer::resetExploration()
-{
-  m_DesiredDistance = 0;
-}
-
-void Explorer::setStart ( Eigen::Vector2i start )
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR_STREAM( "Occupancy map is missing." );
-    return;
-  }
-  if (( start.x() <= 1 ) || ( start.y() <= 1 ) || ( start.x() >= m_OccupancyMap->width()-1 ) || ( start.y() >= m_OccupancyMap->height()-1 ) )
-  {
-    ROS_ERROR_STREAM( "Invalid position!" );
-    return;
-  }
-  computeWalkableMaps();
-
-  if ( !isWalkable( start.x(), start.y() ) )
-  {
-    Eigen::Vector2i correctedStart=getNearestWalkablePoint( start );
-    if ( !isWalkable( correctedStart.x(), correctedStart.y() ) )
-    {
-      ROS_ERROR_STREAM( "No walkable position was found on the map!" );
-    } else
-    {
-        ROS_INFO_STREAM("Start position " << start.x() << "," << start.y() <<  " was corrected to " << correctedStart.x() << "," << correctedStart.y());
-    }
-    m_Start = correctedStart;
-    return;
-  }
-  m_Start = start;
-}
-
-
-Eigen::Vector2i Explorer::getNearestAccessibleTarget(Eigen::Vector2i target )
-{
-    // TODO VS
-    ros::Time start = ros::Time::now();
-
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return target;
-  }
-  if ( ( target.x() <= 1 ) || ( target.y() <= 1 ) || ( target.x() >= m_OccupancyMap->width()-1 ) || ( target.y() >= m_OccupancyMap->height()-1 ) )
-  {
-    ROS_ERROR( "Invalid position!" );
-    return target;
-  }
-
-  ROS_ERROR_STREAM("starting: computeApproachableMaps at " << (ros::Time::now() - start));// TODO VS
-  computeApproachableMaps();
-  ROS_ERROR_STREAM("finished: computeApproachableMaps at " << (ros::Time::now() - start));// TODO VS
-  Eigen::Vector2i correctTarget=target;
-
-  if ( !isApproachable( target.x(), target.y() ) )
-  {
-      ROS_INFO_STREAM("target cell in drivingdistancetransform: " << m_DrivingDistanceTransform->getValue ( target.x(), target.y() ));
-      ROS_INFO_STREAM("target " << target << " is not approachable. Correcting target...");
-    ROS_ERROR_STREAM("starting iteration over obstacle transform at " << (ros::Time::now() - start));// TODO VS
-    int minSqrDist=INT_MAX;
-    computeWalkableMaps();
-    for ( int x = 0; x < m_ObstacleTransform->height(); x++ )
-    {
-      for ( int y = 0; y < m_ObstacleTransform->width(); y++ )
-      {
-        if ( isApproachable ( x,y ) && isWalkable( x , y) )
-        {
-          int xDiff = target.x() - x;
-          int yDiff = target.y() - y;
-          int sqrDist = xDiff*xDiff + yDiff*yDiff;
-          if ( sqrDist < minSqrDist )
-          {
-            correctTarget.x() = x;
-            correctTarget.y() = y;
-            minSqrDist = sqrDist;
-          }
-        }
-      }
-    }
-    ROS_ERROR_STREAM("finished iteration over obstacle transform at " << (ros::Time::now() - start));// TODO VS
-  }
-  ROS_DEBUG_STREAM("Target position " << target.x() << "," << target.y() << " was corrected to " << correctTarget.x() << "," << correctTarget.y());
-
-  return correctTarget;
-}
-
-
-Eigen::Vector2i Explorer::getNearestWalkablePoint( Eigen::Vector2i target )
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return target;
-  }
-  if (( target.x() <= 1 ) || ( target.y() <= 1 ) || ( target.x() >= m_OccupancyMap->width()-1 ) || ( target.y() >= m_OccupancyMap->height()-1 ) )
-  {
-    ROS_ERROR( "Invalid position!" );
-    return target;
-  }
-
-  computeWalkableMaps();
-  Eigen::Vector2i correctTarget=target;
-
-
-  if ( !isWalkable( target.x(), target.y() ) )
-  {
-    int minSqrDist=INT_MAX;
-    for ( int x = 0; x < m_ObstacleTransform->height(); x++ )
-    {
-      for ( int y = 0; y < m_ObstacleTransform->width(); y++ )
-      {
-        if ( isWalkable ( x,y ) )
-        {
-          int xDiff = target.x() - x;
-          int yDiff = target.y() - y;
-          int sqrDist = xDiff*xDiff + yDiff*yDiff;
-          if ( sqrDist < minSqrDist )
-          {
-            correctTarget.x() = x;
-            correctTarget.y() = y;
-            minSqrDist = sqrDist;
-          }
-        }
-      }
-    }
-  }
-  ROS_DEBUG_STREAM("Position " << target.x() << "," << target.y() << " was corrected to " << correctTarget.x() << "," << correctTarget.y());
-
-  return correctTarget;
-}
-
-
-void Explorer::setTarget (Eigen::Vector2i target )
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-  if ( ( target.x() <= 1 ) || ( target.y() <= 1 ) || ( target.x() >= m_OccupancyMap->width()-1 ) || ( target.y() >= m_OccupancyMap->height()-1 ) )
-  {
-    ROS_ERROR( "Invalid position!" );
-    return;
-  }
-  computeApproachableMaps();
-  if ( !isApproachable ( target.x(), target.y() ) )
-  {
-    ROS_WARN( "Target position is not approachable. Path computation will possibly fail." );
-  }
-  m_Target = target;
-  m_DesiredDistance = 0;
-}
-
-
-void Explorer::setTarget (Eigen::Vector2i target, int desiredDistance )
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-  
-  if ( desiredDistance < 1 )
-  {
-    setTarget( target );
-    return;
-  }
-  
-  if ( target.x() + desiredDistance <= 1 || target.x() - desiredDistance >= m_OccupancyMap->width()-1 ||
-       target.y() + desiredDistance <= 1 || target.y() - desiredDistance >= m_OccupancyMap->height()-1 )
-  {
-    ROS_ERROR( "Invalid position" );
-    return;
-  }
-  computeApproachableMaps();
-  // TODO: check if region is approachable
-  m_Target = target;
-  m_DesiredDistance = desiredDistance;
-}
-
-
-// GETTERS ////////////////////////////////////////////////////////////////////////////////////////////////
-
-Eigen::Vector2i Explorer::getStart() const
-{
-  return m_Start;
-}
-
-Eigen::Vector2i Explorer::getTarget() const
-{
-  return m_Target;
-}
-
-GridMap<int8_t>* Explorer::getOccupancyMap()
-{
-  return m_OccupancyMap;
-}
-
-GridMap<double>* Explorer::getObstacleTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-  computeObstacleTransform();
-  return m_ObstacleTransform;
-}
-
-GridMap<double>* Explorer::getCostTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-  computeCostTransform();
-  return m_CostTransform;
-}
-
-GridMap<bool>* Explorer::getTargetMap()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-
-  computeTargetMap();
-  return m_TargetMap;
-}
-
-GridMap<double>* Explorer::getDrivingDistanceTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-  computeDrivingDistanceTransform();
-  return m_DrivingDistanceTransform;
-}
-
-GridMap<double>* Explorer::getTargetDistanceTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-  computeTargetDistanceTransform();
-  return m_TargetDistanceTransform;
-}
-
-GridMap<double>* Explorer::getPathTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-  computePathTransform();
-  return m_PathTransform;
-}
-
-GridMap<double>* Explorer::getExplorationTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return 0;
-  }
-  computeExplorationTransform();
-  return m_ExplorationTransform;
-}
-
-
-
-// MAP GENERATION ////////////////////////////////////////////////////////////////////////////////////////////////7
-
-
-void Explorer::computeApproachableMaps()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-  computeDrivingDistanceTransform();
-}
-
-
-void Explorer::computeWalkableMaps()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-  computeObstacleTransform();
-}
-
-
-void Explorer::computeDrivingDistanceTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-
-  if ( m_DrivingDistanceTransform ) { return; }
-
-  ROS_DEBUG( "Computing drivingDistanceTransform..."  );
-  resetMap( m_DrivingDistanceTransform );
-  distanceFloodFill ( m_DrivingDistanceTransform, m_Start );
-}
-
-
-void Explorer::computeTargetDistanceTransform()
-{
-  if ( !m_OccupancyMap )
-  {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-
-  if ( m_TargetDistanceTransform ) { return; }
-
-  ROS_DEBUG( "Computing targetDistanceTransform..."  );
-  resetMap( m_TargetDistanceTransform );
-  distanceFloodFill ( m_TargetDistanceTransform, m_Target );
-}
-
-
-void Explorer::computeRegionMap()
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-  
-  resetMap( m_TargetMap );
-  ROS_DEBUG( "Computing target region map..."  );
-  
-  m_TargetMap->fill( false );
-  const int desiredDistanceSquared = m_DesiredDistance * m_DesiredDistance;
-  int height = m_OccupancyMap->height();
-  int width = m_OccupancyMap->width();
-  
-  // draw a circle onto the ExplorationMap
-  const int firstX = m_Target.x() - m_DesiredDistance <= 1 ? 2 : m_Target.x() - m_DesiredDistance;
-  const int firstY = m_Target.y() - m_DesiredDistance <= 1 ? 2 : m_Target.y() - m_DesiredDistance;
-  const int lastX  = m_Target.x() + m_DesiredDistance >= width-1  ? width-2  : m_Target.x() + m_DesiredDistance;
-  const int lastY  = m_Target.y() + m_DesiredDistance >= height-1 ? height-2 : m_Target.y() + m_DesiredDistance;
-  
-  for ( int y = firstY; y <= lastY; ++y )
-  {
-    for ( int x = firstX; x <= lastX; ++x ) 
-    {
-      const int dx = x - m_Target.x();
-      const int dy = y - m_Target.y();
-      
-      if ( dx*dx + dy*dy <= desiredDistanceSquared )
-      {
-        m_TargetMap->setValue( x, y, true );
-      }
-    }
-  }
-}
-
-void Explorer::computeFrontierMap()
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Occupancy map is missing." );
-    return;
-  }
-
-  // if ( m_FrontierMap ) { return; }
-
-  resetMap( m_TargetMap );
-  
-  ROS_DEBUG( "Computing frontier map..."  );
-  m_TargetMap->fill ( 0 );
-  // extract borders
-  for ( int y = 1; y < m_OccupancyMap->height() - 1; y++ )
-  {
-    for ( int x = 1; x < m_OccupancyMap->width() - 1; x++ )
-    {
-      int value = m_OccupancyMap->getValue ( x, y );
-      int value_u = m_OccupancyMap->getValue ( x, y - 1 );
-      int value_d = m_OccupancyMap->getValue ( x, y + 1 );
-      int value_l = m_OccupancyMap->getValue ( x - 1, y );
-      int value_r = m_OccupancyMap->getValue ( x + 1, y );
-      bool isFree = value < UNKNOWN && value != NOT_SEEN_YET;
-      bool upUnknown = (value_u == UNKNOWN || value_u == NOT_SEEN_YET);
-      bool downUnknown = (value_d == UNKNOWN || value_u == NOT_SEEN_YET);
-      bool leftUnknown = (value_l == UNKNOWN || value_u == NOT_SEEN_YET);
-      bool rightUnknown = (value_r == UNKNOWN || value_u == NOT_SEEN_YET);
-      bool hasUnknownNeighbour = upUnknown || downUnknown || leftUnknown || rightUnknown;
-      bool isSafe = m_ObstacleTransform->getValue ( x, y ) > m_FrontierSafenessFactor * m_MinAllowedObstacleDistance;
-      if ( isFree && hasUnknownNeighbour && isSafe )
-      {
-        m_TargetMap->setValue ( x, y, 1 );
-      }
-      else
-      {
-        m_TargetMap->setValue ( x, y, 0 );
-      }
-    }
-  }
-}
-
-void Explorer::computeTargetMap()
-{
-  if ( m_DesiredDistance < 1 )
-  {
-    computeFrontierMap();
-  }
-  else
-  {     
-    computeRegionMap();
-  }
-}
-
-void Explorer::computeObstacleTransform()
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return;
-  }
-
-  if ( m_ObstacleTransform ) { return; }
-
-  resetMap( m_ObstacleTransform );
-
-  ROS_DEBUG( "Computing obstacle transform..."  );
-  for ( int x = 0; x < m_ObstacleTransform->width(); x++ )
-  {
-    for ( int y = 0; y < m_ObstacleTransform->height(); y++ )
-    {
-      if ( m_OccupancyMap->getValue ( x, y ) > UNKNOWN ||
-           m_OccupancyMap->getValue(x, y) == NOT_SEEN_YET)
-      {
-        m_ObstacleTransform->setValue ( x, y, 0 );
-      }
-      else
-      {
-        m_ObstacleTransform->setValue ( x, y, OBSTACLE );
-      }
-    }
-  }
-
-  int width = m_ObstacleTransform->width();
-  int height = m_ObstacleTransform->height();
-  double* f = new double[width > height ? width : height];
-
-  // transform along columns
-  for ( int x = 0; x < width; x++ )
-  {
-    for ( int y = 0; y < height; y++ )
-    {
-      // copy column
-      f[y] = m_ObstacleTransform->getValue ( x, y );
-    }
-    // 1-D transform of column
-    double* d = distanceTransform1D ( f, height );
-    // copy transformed 1-D to output image
-    for ( int y = 0; y < height; y++ )
-    {
-      m_ObstacleTransform->setValue ( x, y, d[y] );
-    }
-    delete [] d;
-  }
-
-  // transform along rows
-  for ( int y = 0; y < height; y++ )
-  {
-    for ( int x = 0; x < width; x++ )
-    {
-      f[x] = m_ObstacleTransform->getValue ( x, y );
-    }
-    double* d = distanceTransform1D ( f, width );
-    for ( int x = 0; x < width; x++ )
-    {
-      m_ObstacleTransform->setValue ( x, y, d[x] );
-    }
-    delete [] d;
-  }
-  delete f;
-
-  // take square roots
-  for ( int y = 0; y < m_ObstacleTransform->height(); y++ )
-  {
-    for ( int x = 0; x < m_ObstacleTransform->width(); x++ )
-    {
-      if ( isWalkable( x,y ) )
-      {
-        float value = sqrt ( m_ObstacleTransform->getValue ( x, y ) );
-        m_ObstacleTransform->setValue ( x, y, value );
-      }
-    }
-  }
-}
-
-
-void Explorer::computeCostTransform()
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return;
-  }
-
-  if ( m_CostTransform ) { return; }
-
-  computeObstacleTransform();
-  computeApproachableMaps();
-
-  resetMap( m_CostTransform );
-  m_CostTransform->fill( ExplorerConstants::MAX_COST );
-
-  for ( unsigned y=0; y<m_CostTransform->height(); y++)
-  {
-    for ( unsigned x=0; x<m_CostTransform->width(); x++)
-    {
-      if ( !isApproachable( x, y ) ) {
-        continue;
-      }
-      double dist = m_ObstacleTransform->getValue(x, y);
-      double cost = 0;
-      if ( dist < m_MinSafeObstacleDistance ) {
-        cost = m_MinSafeObstacleDistance - dist;
-      }
-      if ( dist > m_MaxSafeObstacleDistance ) {
-        cost = dist - m_MaxSafeObstacleDistance;
-      }
-      m_CostTransform->setValue( x, y, cost * cost );
-    }
-  }
-}
-
-
-void Explorer::computePathTransform()
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return;
-  }
-
-  if ( m_PathTransform ) { return; }
-
-  computeObstacleTransform();
-  computeCostTransform();
-
-  resetMap( m_PathTransform );
-
-  ROS_DEBUG( "Computing path transform..."  );
-  GridMap<double>* map = m_PathTransform;
-  int width = map->width();
-  int height = map->height();
-  double maxDistance = MAX_DISTANCE;
-  map->fill ( maxDistance );
-
-  int fromX = m_Target.x();
-  int fromY = m_Target.y();
-  map->setValue ( fromX, fromY, 0 );
-
-  queue<int> xQueue;
-  queue<int> yQueue;
-  xQueue.push ( fromX + 1 );
-  yQueue.push ( fromY );
-  xQueue.push ( fromX - 1 );
-  yQueue.push ( fromY );
-  xQueue.push ( fromX );
-  yQueue.push ( fromY - 1 );
-  xQueue.push ( fromX );
-  yQueue.push ( fromY + 1 );
-  int xVal, yVal;
-  while ( !xQueue.empty() )
-  {
-    xVal = xQueue.front();
-    yVal = yQueue.front();
-    xQueue.pop();
-    yQueue.pop();
-    if ( xVal > 0 && xVal < width - 1 && yVal > 0 && yVal < height - 1 && isWalkable( xVal, yVal ) )
-    {
-      float value = map->getValue ( xVal, yVal );
-      float value_u = map->getValue ( xVal, yVal - 1 ) + 1;
-      float value_d = map->getValue ( xVal, yVal + 1 ) + 1;
-      float value_l = map->getValue ( xVal - 1, yVal ) + 1;
-      float value_r = map->getValue ( xVal + 1, yVal ) + 1;
-
-      float value_ur = map->getValue ( xVal + 1, yVal - 1 ) + 1.4142;
-      float value_ul = map->getValue ( xVal - 1, yVal - 1 ) + 1.4142;
-      float value_ll = map->getValue ( xVal - 1, yVal + 1 ) + 1.4142;
-      float value_lr = map->getValue ( xVal + 1, yVal + 1 ) + 1.4142;
-
-      float min1 = value_u < value_d ? value_u : value_d;
-      float min2 = value_l < value_r ? value_l : value_r;
-      float min3 = value_ur < value_ul ? value_ur : value_ul;
-      float min4 = value_ll < value_lr ? value_ll : value_lr;
-      float min12 = min1 < min2 ? min1 : min2;
-      float min34 = min3 < min4 ? min3 : min4;
-      float min = min12 < min34 ? min12 : min34;
-      float newVal = min + m_SafePathWeight * m_CostTransform->getValue( xVal, yVal );
-      if ( value > newVal )
-      {
-        map->setValue ( xVal, yVal, newVal );
-        if ( map->getValue ( xVal, yVal + 1 ) > newVal + 1 )
-        {
-          xQueue.push ( xVal );
-          yQueue.push ( yVal + 1 );
-        }
-        if ( map->getValue ( xVal, yVal - 1 ) > newVal + 1 )
-        {
-          xQueue.push ( xVal );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal + 1, yVal ) > newVal + 1 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal );
-        }
-        if ( map->getValue ( xVal - 1, yVal ) > newVal + 1 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal );
-        }
-        if ( map->getValue ( xVal + 1, yVal - 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal - 1, yVal - 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal + 1, yVal + 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal + 1 );
-        }
-        if ( map->getValue ( xVal - 1, yVal + 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal + 1 );
-        }
-      }
-    }
-  }
-}
-
-
-void Explorer::computeExplorationTransform()
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return;
-  }
-
-  if ( m_ExplorationTransform ) { return; }
-
-  ROS_INFO_STREAM("computeExplorationTransform: before obstacle transform");
-  computeObstacleTransform();
-  ROS_INFO_STREAM("computeExplorationTransform: before cost transform");
-  computeCostTransform();
-  ROS_INFO_STREAM("computeExplorationTransform: before target map");
-  computeTargetMap();
-  ROS_INFO_STREAM("computeExplorationTransform: before walkable maps");
-  computeWalkableMaps();
-  ROS_INFO_STREAM("computeExplorationTransform: before exploration transform");
-  resetMap( m_ExplorationTransform );
-
-  ROS_DEBUG( "Computing exploration transform..."  );
-  GridMap<double>* map = m_ExplorationTransform;
-  int width = map->width();
-  int height = map->height();
-  double maxDistance = MAX_DISTANCE;
-  map->fill ( maxDistance );
-  queue<int> xQueue;
-  queue<int> yQueue;
-  // fill seeds: Mark the frontiers as targets
-  ROS_INFO_STREAM("computeExplorationTransform: before first loop");
-  for ( int y = 0; y < m_TargetMap->height(); y++ )
-  {
-    for ( int x = 0; x < m_TargetMap->width(); x++ )
-    {
-      if ( m_TargetMap->getValue ( x, y ) == 1 )
-      {
-        map->setValue ( x, y, 0 );
-        xQueue.push ( x + 1 );
-        yQueue.push ( y );
-        xQueue.push ( x - 1 );
-        yQueue.push ( y );
-        xQueue.push ( x );
-        yQueue.push ( y - 1 );
-        xQueue.push ( x );
-        yQueue.push ( y + 1 );
-      }
-    }
-  }
-  ROS_INFO_STREAM("computeExplorationTransform: After first looop");
-  // Now go through the coordinates in the queue
-  int xVal, yVal;
-  ROS_INFO_STREAM("computeExplorationTransform: before while loop");
-  while ( !xQueue.empty() )
-  {
-    xVal = xQueue.front();
-    yVal = yQueue.front();
-    xQueue.pop();
-    yQueue.pop();
-    if ( xVal > 0 && xVal < width - 1 && yVal > 0 && yVal < height - 1 && isWalkable ( xVal, yVal ) )
-    {
-      // Get own cost and the cost of the 8 neighbor cells (neighbors plus the cost to go there)
-      float value = map->getValue ( xVal, yVal );
-      float value_u = map->getValue ( xVal, yVal - 1 ) + 1;
-      float value_d = map->getValue ( xVal, yVal + 1 ) + 1;
-      float value_l = map->getValue ( xVal - 1, yVal ) + 1;
-      float value_r = map->getValue ( xVal + 1, yVal ) + 1;
-      float value_ur = map->getValue ( xVal + 1, yVal - 1 ) + 1.4142;
-      float value_ul = map->getValue ( xVal - 1, yVal - 1 ) + 1.4142;
-      float value_ll = map->getValue ( xVal - 1, yVal + 1 ) + 1.4142;
-      float value_lr = map->getValue ( xVal + 1, yVal + 1 ) + 1.4142;
-      float min1 = value_u < value_d ? value_u : value_d;
-      float min2 = value_l < value_r ? value_l : value_r;
-      float min3 = value_ur < value_ul ? value_ur : value_ul;
-      float min4 = value_ll < value_lr ? value_ll : value_lr;
-      float min12 = min1 < min2 ? min1 : min2;
-      float min34 = min3 < min4 ? min3 : min4;
-      float min = min12 < min34 ? min12 : min34;
-      float newVal = min + m_SafePathWeight * m_CostTransform->getValue( xVal, yVal );
-      if ( value > newVal )
-      {
-        // Cost is lower then the currently known cost: Reduce cost here
-        map->setValue ( xVal, yVal, newVal );
-        // Add the neighbours that might profit in the queue
-        if ( map->getValue ( xVal, yVal + 1 ) > newVal + 1 )
-        {
-          xQueue.push ( xVal );
-          yQueue.push ( yVal + 1 );
-        }
-        if ( map->getValue ( xVal, yVal - 1 ) > newVal + 1 )
-        {
-          xQueue.push ( xVal );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal + 1, yVal ) > newVal + 1 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal );
-        }
-        if ( map->getValue ( xVal - 1, yVal ) > newVal + 1 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal );
-        }
-        if ( map->getValue ( xVal + 1, yVal - 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal - 1, yVal - 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal + 1, yVal + 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal + 1 );
-        }
-        if ( map->getValue ( xVal - 1, yVal + 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal + 1 );
-        }
-      }
-    }
-  }
-  ROS_INFO_STREAM("computeExplorationTransform: after exploration transform");
-}
-
-
-vector<Eigen::Vector2i> Explorer::sampleWaypointsFromPath ( std::vector<Eigen::Vector2i> pathPoints, float threshold )
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return pathPoints;
-  }
-  if ( pathPoints.size() < 3 ) {
-    return pathPoints;
-  }
-
-  computeObstacleTransform();
-
-  vector<Eigen::Vector2i> simplifiedPath;
-  simplifiedPath.reserve( pathPoints.size() );
-
-  Eigen::Vector2i lastAddedPoint = pathPoints[0];
-  simplifiedPath.push_back ( lastAddedPoint );
-
-  for ( unsigned int i = 1; i < pathPoints.size() - 1; i++ )
-  {
-    double distanceToNextPoint = map_tools::distance(lastAddedPoint, pathPoints.at(i));
-    double obstacleDistanceLastAddedPoint = m_ObstacleTransform->getValue ( lastAddedPoint.x(), lastAddedPoint.y() );
-    double obstacleDistancePossibleNextPoint = m_ObstacleTransform->getValue ( pathPoints[i].x(), pathPoints[i].y() );
-    if (( distanceToNextPoint >= obstacleDistanceLastAddedPoint*threshold ) ||
-        ( distanceToNextPoint >= obstacleDistancePossibleNextPoint*threshold )  )
-    {
-      simplifiedPath.push_back ( pathPoints[i] );
-      lastAddedPoint = pathPoints[i];
-    }
-  }
-  simplifiedPath.push_back ( pathPoints[pathPoints.size() - 1] );
-  return simplifiedPath;
-}
-
-
-std::vector<Eigen::Vector2i> Explorer::getPath(bool& success)
-{
-  success = false;
-  
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return vector<Eigen::Vector2i>();
-  }
-  
-  if ( m_DesiredDistance > 0 ) {
-    // we are actually performing an exploration since the target
-    // is a region.
-      ROS_INFO_STREAM("Desired Distance > 0: Executing getExplorationTransformPath");
-    return getExplorationTransformPath( success );
-  }
-  ROS_INFO_STREAM("Computing Path Transform");
-  computePathTransform();
-  ROS_INFO_STREAM("Finished Path Transform");
-  /*
-  ROS_INFO_STREAM("Explorer: Path Transform: " << m_TargetDistanceTransform->width() << " " << m_TargetDistanceTransform->height());
-  ROS_INFO_STREAM("---------------------");
-  for(int x = 0; x < 10; x++) {
-      std::stringstream str;
-      str << "|";
-      for(int y = 0; y < 10; y++) {
-          str << (double)(m_TargetDistanceTransform->getValue(x, y)) << "|";
-      }
-    ROS_INFO(str.str().c_str());
-  }
-  ROS_INFO_STREAM("---------------------");
-    */
-  vector<Eigen::Vector2i> path;
-
-  int x = m_Start.x();
-  int y = m_Start.y();
-
-  int width = m_OccupancyMap->width();
-  int height = m_OccupancyMap->height();
-
-  //special case: start and end point are equal, return single waypoint
-  if ( map_tools::distance( m_Start, m_Target ) < 2.0 )
-  {
-    success = true;
-    path.push_back ( Eigen::Vector2i( m_Start.x(), m_Start.y() ) );
-    return path;
-  }
-
-  while ( x != m_Target.x() || y != m_Target.y() )
-  {
-    path.push_back ( Eigen::Vector2i( x, y ) );
-    int minPosX = x;
-    int minPosY = y;
-    double min = m_PathTransform->getValue ( x, y );
-
-    if ( ( x <= 1 ) || ( y <= 1 ) || ( x >= width-1 ) || ( y >= height-1 ) )
-    {
-      ROS_ERROR( "Out of map bounds" );
-      return vector<Eigen::Vector2i>();
-    }
-
-    for ( int i = -1; i <= 1; i++ )
-    {
-      for ( int j = -1; j <= 1; j++ )
-      {
-        double pt = m_PathTransform->getValue ( x + i, y + j );
-        if ( pt < min )
-        {
-          min = pt;
-          minPosX = x + i;
-          minPosY = y + j;
-        }
-      }
-    }
-    if ( minPosX == x && minPosY == y )
-    {
-      ROS_WARN( "Target is unreachable!" );
-      return vector<Eigen::Vector2i>();
-    }
-    else
-    {
-      x = minPosX;
-      y = minPosY;
-    }
-  }
-  success = true;
-
-  return path;
-}
-
-vector<Eigen::Vector2i> Explorer::getExplorationTransformPath(bool& success)
-{
-  success = false;
-
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return vector<Eigen::Vector2i>();
-  }
-  
-  ROS_INFO_STREAM("Exploration Transform: Before obstacle transform");
-  computeObstacleTransform();
-  ROS_INFO_STREAM("Exploration Transform: Before exploration transform");
-  computeExplorationTransform();
-  ROS_INFO_STREAM("Exploration Transform: after obstacle transform");
-  
-  //check if we are already there
-  if ( m_TargetMap->getValue ( m_Start.x(), m_Start.y() ) )
-  {
-    success = true;
-    vector<Eigen::Vector2i> path;
-    path.push_back ( Eigen::Vector2i ( m_Start.x(), m_Start.y() ) );
-    return path;
-  }
-
-  int width = m_OccupancyMap->width();
-  int height = m_OccupancyMap->height();
-
-  vector<Eigen::Vector2i> path;
-  int x = m_Start.x();
-  int y = m_Start.y();
-
-  if ( m_ObstacleTransform->getValue ( x, y ) < m_MinAllowedObstacleDistance )
-  {
-    // robot got stuck!
-    // find way out using ObstacleTransform...
-    int maxPosX = x;
-    int maxPosY = y;
-
-    if ( ( x <= 1 ) || ( y <= 1 ) || ( x >= width-1 ) || ( y >= height-1 ) )
-    {
-      ROS_ERROR( "Out of map bounds" );
-      return vector<Eigen::Vector2i>();
-    }
-
-    while ( m_ObstacleTransform->getValue ( maxPosX, maxPosY ) < m_MinAllowedObstacleDistance )
-    {
-      double max = m_ObstacleTransform->getValue ( x, y );
-      for ( int i = -1; i <= 1; i++ )
-      {
-        for ( int j = -1; j <= 1; j++ )
-        {
-          double pt = m_ObstacleTransform->getValue ( x + i, y + j );
-          if ( pt > max )
-          {
-            max = pt;
-            maxPosX = x + i;
-            maxPosY = y + j;
-          }
-        }
-      }
-      if ( maxPosX == x && maxPosY == y ) // no ascentFound
-      {
-        break;
-      }
-      else
-      {
-        path.push_back ( Eigen::Vector2i ( maxPosX, maxPosY ) );
-        x = maxPosX;
-        y = maxPosY;
-      }
-    }
-  }
-  // now path is "free"
-  bool descentFound = true;
-  while ( descentFound )
-  {
-    descentFound = false;
-    int minPosX = x;
-    int minPosY = y;
-    double min = m_ExplorationTransform->getValue ( x, y );
-    if ( ( x <= 1 ) || ( y <= 1 ) || ( x >= width-1 ) || ( y >= height-1 ) )
-    {
-      ROS_ERROR( "Out of map bounds" );
-      return vector<Eigen::Vector2i>();
-    }
-
-    for ( int i = -1; i <= 1; i++ )
-    {
-      for ( int j = -1; j <= 1; j++ )
-      {
-        double pt = m_ExplorationTransform->getValue ( x + i, y + j );
-        if ( pt < min )
-        {
-          min = pt;
-          minPosX = x + i;
-          minPosY = y + j;
-        }
-      }
-    }
-    if ( minPosX == x && minPosY == y ) // no descentFound
-    {
-      descentFound = false;
-    }
-    else
-    {
-      descentFound = true;
-      path.push_back ( Eigen::Vector2i ( minPosX, minPosY ) );
-      x = minPosX;
-      y = minPosY;
-    }
-  }
-  success = true;
-
-  ROS_INFO_STREAM("Exploration Transform: End of function");
-  return path;
-
-#if 0  
-  // START P2AT HACK
-  vector< Eigen::Vector2i > newPath;
-  for ( unsigned start=0; start<path.size()-1; ++start )
-  {
-    int maxVal = start+1;
-    for ( unsigned end=start+1; end<path.size(); ++end )
-    {
-      bool ok = true;
-      // draw bresenham line and check wether an object is within maximum allowed distance
-      // THANKS TO WIKIPEDIA 
-      int x, y, t, dx, dy, incx, incy, pdx, pdy, ddx, ddy, es, el, err;
-      /* Entfernung in beiden Dimensionen berechnen */
-      dx = path[end].x() - path[start].x();
-      dy = path[end].y() - path[start].y();
-      /* Vorzeichen des Inkrements bestimmen */
-      incx = (dx > 0) ? 1 : (dx < 0) ? -1 : 0;
-      incy = (dy > 0) ? 1 : (dy < 0) ? -1 : 0;
-      if(dx<0) dx = -dx;
-      if(dy<0) dy = -dy;
-      /* feststellen, welche Entfernung größer ist */
-      if (dx>dy)
-      {
-        /* x ist schnelle Richtung */
-        pdx=incx; pdy=0;    /* pd. ist Parallelschritt */
-        ddx=incx; ddy=incy; /* dd. ist Diagonalschritt */
-        es =dy;   el =dx;   /* Fehlerschritte schnell, langsam */
-      } else
-      {
-        /* y ist schnelle Richtung */
-        pdx=0;    pdy=incy; /* pd. ist Parallelschritt */
-        ddx=incx; ddy=incy; /* dd. ist Diagonalschritt */
-        es =dx;   el =dy;   /* Fehlerschritte schnell, langsam */
-      }
-      /* Initialisierungen vor Schleifenbeginn */
-      x = path[start].x();
-      y = path[start].y();
-      err = el/2;
-      /* Pixel berechnen */
-      for(t=0; t<el; ++t) /* t zaehlt die Pixel, el ist auch Anzahl */
-      {
-        /* Aktualisierung Fehlerterm */
-        err -= es; 
-        if(err<0)
-        {
-          /* Fehlerterm wieder positiv (>=0) machen */
-          err += el;
-          /* Schritt in langsame Richtung, Diagonalschritt */
-          x += ddx;
-          y += ddy;
-        } else
-        {
-          /* Schritt in schnelle Richtung, Parallelschritt */
-          x += pdx;
-          y += pdy;
-        }
-      
-        // --- start: check if obstacle around
-        if ( m_ObstacleTransform->getValue ( x, y ) < m_MinAllowedObstacleDistance )
-        {
-          ok = false;
-          break;
-        }
-        // --- end  : check if obstacle around
-      } // Pixel berechnen
-      
-      if ( ok )
-      {
-        maxVal = end;
-      }
-    } // for: inner
-    newPath.push_back( path[maxVal] );
-    start = maxVal; // incremented by foor loop to max+1
-  } // for: outer
-  // END: P2AT HACK
-
-  success = true;
-  return newPath;
-#endif
-}
-
-
-bool Explorer::getNearestFrontier ( Eigen::Vector2i& nextFrontier )
-{
-  if ( !m_OccupancyMap) {
-    ROS_ERROR( "Missing occupancy map. Aborting." );
-    return false;
-  }
-
-  computeFrontierMap();
-  computeDrivingDistanceTransform();
-
-  bool found = false;
-  int distXPos = -1;
-  int distYPos = -1;
-  double dist = 10000000;
-  for ( int y = 0; y < m_TargetMap->height(); y++ )
-  {
-    for ( int x = 0; x < m_TargetMap->width(); x++ )
-    {
-      if ( m_TargetMap->getValue ( x, y ) == 1 && m_DrivingDistanceTransform->getValue ( x, y ) < 999999 )
-      {
-        if ( m_DrivingDistanceTransform->getValue ( x, y ) < dist )
-        {
-          found = true;
-          dist = m_DrivingDistanceTransform->getValue ( x, y );
-          distXPos = x;
-          distYPos = y;
-        }
-      }
-    }
-  }
-  if ( found )
-  {
-    nextFrontier.x() =  distXPos;
-    nextFrontier.y() =  distYPos;
-    return true;
-  }
-  else
-  {
-    return false;
-  }
-}
-
-
-
-// HELPERS //////////////////////////////////////////////////////////////////////////////////////////////////////////
-
-
-void Explorer::distanceFloodFill ( GridMap<double>* map, Eigen::Vector2i start )
-{
-  if ( !map ) {
-    ROS_ERROR( "Received 0-pointer!" );
-  }
-
-  computeObstacleTransform();
-
-  int width = map->width();
-  int height = map->height();
-  map->fill ( MAX_DISTANCE );
-
-  int fromX = start.x();
-  int fromY = start.y();
-  map->setValue ( fromX, fromY, 0 );
-
-  queue<int> xQueue;
-  queue<int> yQueue;
-  xQueue.push ( fromX + 1 );
-  yQueue.push ( fromY );
-  xQueue.push ( fromX - 1 );
-  yQueue.push ( fromY );
-  xQueue.push ( fromX );
-  yQueue.push ( fromY - 1 );
-  xQueue.push ( fromX );
-  yQueue.push ( fromY + 1 );
-  int xVal, yVal;
-  while ( !xQueue.empty() )
-  {
-    xVal = xQueue.front();
-    yVal = yQueue.front();
-    xQueue.pop();
-    yQueue.pop();
-    bool isFree = (m_OccupancyMap->getValue ( xVal, yVal ) < UNKNOWN  ||
-                   m_OccupancyMap->getValue ( xVal, yVal ) != NOT_SEEN_YET); // only fill free cells
-    bool isSafe = m_ObstacleTransform->getValue ( xVal, yVal ) > m_MinAllowedObstacleDistance;
-    if ( xVal > 0 && xVal < width - 1 && yVal > 0 && yVal < height - 1 && isFree && isSafe )
-    {
-      float value = map->getValue ( xVal, yVal );
-      float value_u = map->getValue ( xVal, yVal - 1 ) + 1;
-      float value_d = map->getValue ( xVal, yVal + 1 ) + 1;
-      float value_l = map->getValue ( xVal - 1, yVal ) + 1;
-      float value_r = map->getValue ( xVal + 1, yVal ) + 1;
-
-      float value_ur = map->getValue ( xVal + 1, yVal - 1 ) + 1.4142;
-      float value_ul = map->getValue ( xVal - 1, yVal - 1 ) + 1.4142;
-      float value_ll = map->getValue ( xVal - 1, yVal + 1 ) + 1.4142;
-      float value_lr = map->getValue ( xVal + 1, yVal + 1 ) + 1.4142;
-
-      float min1 = value_u < value_d ? value_u : value_d;
-      float min2 = value_l < value_r ? value_l : value_r;
-      float min3 = value_ur < value_ul ? value_ur : value_ul;
-      float min4 = value_ll < value_lr ? value_ll : value_lr;
-      float min12 = min1 < min2 ? min1 : min2;
-      float min34 = min3 < min4 ? min3 : min4;
-      float min = min12 < min34 ? min12 : min34;
-      float newVal = min;
-      if ( value > newVal )
-      {
-        map->setValue ( xVal, yVal, newVal );
-        if ( map->getValue ( xVal, yVal + 1 ) > newVal + 1 )
-        {
-          xQueue.push ( xVal );
-          yQueue.push ( yVal + 1 );
-        }
-        if ( map->getValue ( xVal, yVal - 1 ) > newVal + 1 )
-        {
-          xQueue.push ( xVal );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal + 1, yVal ) > newVal + 1 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal );
-        }
-        if ( map->getValue ( xVal - 1, yVal ) > newVal + 1 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal );
-        }
-        if ( map->getValue ( xVal + 1, yVal - 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal - 1, yVal - 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal - 1 );
-        }
-        if ( map->getValue ( xVal + 1, yVal + 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal + 1 );
-          yQueue.push ( yVal + 1 );
-        }
-        if ( map->getValue ( xVal - 1, yVal + 1 ) > newVal + 1.4142 )
-        {
-          xQueue.push ( xVal - 1 );
-          yQueue.push ( yVal + 1 );
-        }
-      }
-    }
-  }
-}
-
-
-// Implementation taken from http://www.cs.cmu.edu/~cil/vnew.html
-double* Explorer::distanceTransform1D ( double *f, int n )
-{
-  //int width = m_OccupancyMap->width();
-  //int height = m_OccupancyMap->height();
-  //double maxDistance = height > width ? height : width;
-
-  double *d = new double[n];
-  int *v = new int[n];
-  double *z = new double[n+1];
-  int k = 0;
-  v[0] = 0;
-  z[0] = -INT_MAX;
-  z[1] = INT_MAX;
-  for ( int q = 1; q <= n-1; q++ )
-  {
-    double s  = ( ( f[q]+ ( q*q ) )- ( f[v[k]]+ ( v[k]*v[k] ) ) ) / ( 2*q-2*v[k] );
-    while ( s <= z[k] )
-    {
-      k--;
-      s  = ( ( f[q]+ ( q*q ) )- ( f[v[k]]+ ( v[k]*v[k] ) ) ) / ( 2*q-2*v[k] );
-    }
-    k++;
-    v[k] = q;
-    z[k] = s;
-    z[k+1] = INT_MAX;
-  }
-
-  k = 0;
-  for ( int q = 0; q <= n-1; q++ )
-  {
-    while ( z[k+1] < q )
-      k++;
-    d[q] = ( ( q-v[k] ) * ( q-v[k] ) ) + f[v[k]];
-  }
-
-  delete [] v;
-  delete [] z;
-  return d;
-}
diff --git a/homer_nav_libs/src/Explorer/Explorer.h b/homer_nav_libs/src/Explorer/Explorer.h
deleted file mode 100644
index 29a51ccf..00000000
--- a/homer_nav_libs/src/Explorer/Explorer.h
+++ /dev/null
@@ -1,355 +0,0 @@
-#ifndef EXPLORER_H
-#define EXPLORER_H
-
-#include <vector>
-#include <geometry_msgs/Pose.h>
-
-#include "GridMap.h"
-#include "tools/tools.h"
-
-namespace ExplorerConstants
-{
-  static int8_t UNKNOWN;
-  static const int8_t NOT_SEEN_YET = -1;
-  static const double MAX_DISTANCE = DBL_MAX;
-  static const double MAX_COST = DBL_MAX;
-  static const int OBSTACLE = INT_MAX;
-}
-
-/**
- * @class  Explorer
- * @author Malte Knauf, Stephan Wirth, David Gossow (RX)
- * @brief  Path planning & exploration class
- *
- * Usage:
- *
- * - Call setOccupancyMap() to set the base map for path finding.
- * - Set a start point by calling setStart()
- *
- * - For path planning:
- *   +Choose a target by calling setTarget()
- *   +To correct a target to the nearest approachable position,
- *    call getNearestAccessibleTarget
- *   +Call getPathTransformPath()
- *
- *  -For exploration:
- *   +Call resetExploration()
- *   +Call getExplorationTransformPath()
- *   +The calculated target is the last element in the returned path
- *
- * - Call sampleWaypointsFromPath() to extract waypoints from a calculated path
- *
- * This class uses a couple of "maps" for computation and storing data:
- *
- * - m_OccupancyMap stores the occupancy probabilities in double values. A value of 100 means
- *       totally occupied, 0 totally free.
- * - m_ObstacleDistanceMap stores in each cell the distance (one unit = one cell) to the nearest obstacle.
- *       This map is computed by an eucledian distance transformation from m_OccupancyMap.
- * - m_FrontierMap is a bool map which has 1 in frontier cells and 0 in all others. A frontier
- *       is defined as a free cell that has one of its four direct neighbours in unknown space and is "safe" for
- *       the robot (m_ObstacleDistanceMap is used for that).
- * - m_DrivingDistanceMap is a double map that stores for each cell the distance to m_Start. It is computed
- *       by a flood-fill (seed-fill) algorithm. The values are therefor only an approximation and not exact.
- *       m_DrivingDistanceMap is used to search the nearest frontier when requesting an auto target.
- * - m_TargetMap is a double map that stores for each cell the distance to m_Target. It is computed
- *       like m_DrivingDistanceMap. This map is used as heuristic for the A*-Pathfinding algorithm.
- * - m_NavigationMap is used to mark the cells that are touched by the A*-Pathfinding algorithm.
- *
- *
- * The coordinate system and units that are used in this class are based on map cells.
- * @see GridMap
- *
- */
-class Explorer
-{
-
-  public:
-
-    /**
-     * @brief Default constructor.
-     * @param minAllowedObstacleDistance,maxAllowedObstacleDistance Range of allowed distances to next obstacle [Pixels]
-     * @param minSafeObstacleDistance,maxSafeObstacleDistance Range of distances to next obstacle considered as safe [Pixels]
-     * @param safePathWeight Weight for safer path
-     */
-    Explorer ( double minAllowedObstacleDistance, double maxAllowedObstacleDistance,
-               double minSafeObstacleDistance, double maxSafeObstacleDistance,
-               double safePathWeight, double frontierSafenessFactor=1.0, int unknownThreshold=50 );
-
-    /**
-     * @brief Destructor deletes all dynamically allocated memory used by the maps
-     */
-    ~Explorer();
-
-    void setUnknownThreshold(int unknownTresh);
-    void setAllowedObstacleDistance ( double min, double max );
-    void setSafeObstacleDistance ( double min, double max );
-    void setFrontierSafenessFactor ( double frontierSafenessFactor );
-    void setSafePathWeight ( double weight );
-    /**
-     * @brief Copies and sets the occupancy map.
-     * @param width Width of the map
-     * @param height Height of the map
-     * @param origin Real-world pose of the cell (0,0) in the map
-     * @param data GridMap-data (occupancy probabilities: 0 = free, 100 = occupied) of size width * height
-     */
-    void setOccupancyMap ( int width, int height, geometry_msgs::Pose origin, int8_t* mapData);
-
-    /** only update occupied areas in current occupancy map */
-    void updateObstacles ( int width, int height, geometry_msgs::Pose origin, int8_t* mapData );
-
-    /**
-     * @brief Sets the start position for the path finding algorithm.
-     * m_Start is set to the given value.
-     * If startPixel lies outside the map, m_Start remains untouched.
-     * @param startPixel Start position for path finding in pixel (map-) coordinates.
-     */
-    void setStart ( Eigen::Vector2i start );
-
-    /**
-     * @brief Resets the internal state of the exploration mode.
-     * Sets m_DesiredDistance to 0, such that getExplorationTransformPath() triggers
-     * a frontier exploration if there is no prior call of setTarget(point, distance).
-     * Call this method once before every exploration.
-     */
-    void resetExploration();
-
-    /**
-     * Sets the target position for path finding. m_Target is set to the given value.
-     * If endPixel lies outside of the map, m_Target remains untouched.
-     * computeTargetDistanceMap() is called at the end of this method. m
-     * @param targetPixel Target to reach from startPixel
-     */
-    void setTarget ( Eigen::Vector2i targetPixel );
-
-    /**
-     * Sets the target region for path finding. m_ExplorationMap is set to the given region.
-     * If targetPixel lies outside of the map, the exploration map is set empty.
-     * @param targetPixel Center of the target region to reach from startPixel
-     * @param radius Radius of the target region in pixels
-     */
-    void setTarget( Eigen::Vector2i targetPixel, int radius );
-
-    /**
-     * @brief find the nearest position to target that is approachble from the start position
-     */
-    Eigen::Vector2i getNearestAccessibleTarget ( Eigen::Vector2i target );
-
-    /**
-     * @brief find the nearest position to target surpassing the minimum obstacle distance
-     */
-    Eigen::Vector2i getNearestWalkablePoint ( Eigen::Vector2i target );
-
-    /**
-     * @brief Returns the map-coordinates of the nearest frontier to m_Start.
-     * Uses m_DrivingDistanceMap and m_ObstacleDistanceMap. If there is no frontier left,
-     * nextFrontier remains untouched.
-     * @param[out] nextFrontier Nearest frontier in map-coordinates.
-     * @return true if frontier found and stored in nextFrontier, false if no frontier found (nextFrontier
-     *         remains untouched).
-     */
-    bool getNearestFrontier ( Eigen::Vector2i& nextFrontier );
-
-    /**
-     * Computes the path from m_Start to m_Target with path transform.
-     * The result is returned. If the returned vector contains no elements, there is no path.
-     * @return vector with path points
-     */
-    std::vector<Eigen::Vector2i> getPath( bool &success );
-
-    /**
-     * Computes the path from m_Start to the next frontier using exploration transform.
-     * The result is returned. If the returned vector contains no elements, there is no path.
-     * @return vector with path points
-     */
-    std::vector<Eigen::Vector2i> getExplorationTransformPath( bool &success );
-
-    /**
-     * @brief Returns a version of the path that contains less vertices.
-     * @note  The nearer the next obstacle, the more waypoints are created.
-     * @param path List of vertices to be simplified
-     * @param treshold[0..1] a lower threshold results in more waypoints (default:1.0)
-     * @return Vector of (sampled) waypoints.
-     */
-    std::vector<Eigen::Vector2i> sampleWaypointsFromPath ( std::vector<Eigen::Vector2i> path, float threshold=1.0 );
-
-    /**
-     * Getters for the different transforms (see constructor for description)
-     */
-    GridMap<int8_t>* getOccupancyMap();
-    GridMap<double>* getObstacleTransform();
-    GridMap<double>* getCostTransform();
-    GridMap<bool>* getTargetMap();
-    GridMap<double>* getDrivingDistanceTransform();
-    GridMap<double>* getTargetDistanceTransform();
-    GridMap<double>* getPathTransform();
-    GridMap<double>* getExplorationTransform();
-
-    /**
-     * @return Start position
-     */
-    Eigen::Vector2i getStart() const;
-
-    /**
-     * @return Target position
-     */
-    Eigen::Vector2i getTarget() const;
-
-  private:
-
-    /** @brief Delete the given map and set pointer to 0 */
-    template <class T>
-    void releaseMap ( GridMap<T>*& map )
-    {
-      if ( map )
-      {
-        delete map;
-        map=0;
-      }
-    }
-
-    /** @brief Delete and re-create given map */
-    template <class T>
-    void resetMap ( GridMap<T>*& map )
-    {
-      if ( !m_OccupancyMap )
-      {
-        ROS_ERROR ( "Occupancy map is missing." );
-        return;
-      }
-      releaseMap ( map );
-      map = new GridMap<T> ( m_OccupancyMap->width(), m_OccupancyMap->height() );
-    }
-
-    /**
-     * @return true if the robot can stand on the given position without touching an obstacle, false otherwise
-     * @warning Call computeWalkableMaps before
-     */
-    inline bool isWalkable ( int x, int y ) const
-    {
-      return ( ( m_OccupancyMap->getValue ( x, y ) < ExplorerConstants::UNKNOWN ) &&
-               ( m_ObstacleTransform->getValue ( x, y ) > m_MinAllowedObstacleDistance ) );
-    }
-
-    /**
-     * @return true if point is approachable from the current start position, false otherwise.
-     * @warning m_OccupancyMap, m_ObstacleTransform and m_DrivingDistanceTransform have to be present!
-     * @warning Call computeApproachableMaps before
-     */
-    inline bool isApproachable ( int x, int y ) const
-    {
-      return ( m_DrivingDistanceTransform->getValue ( x, y ) < ExplorerConstants::MAX_DISTANCE );
-    }
-
-    /** @brief Releases all memory of the member maps */
-    void releaseMaps();
-
-    /**
-      * @brief Helper function for computeDistanceTransformation.
-      * @param f 1D-Array for distance transformation
-      * @param n Number of elements in f
-      * @return Distance transformation of f
-      */
-    double* distanceTransform1D ( double *f, int n );
-
-    /**
-     * @brief Fills the given map from given start point with distance values to this point.
-     * The filling will only be performed on cells that are marked as free in m_OccupancyMap and
-     * that have an obstacle distance value between m_MinimumObstacleDistance and m_MaximumObstacleDistance.
-     * The map that is passed as argument will be fully overwritten by this function.
-     * @param map GridMap to fill
-     * @param start Start point for the fill algorithm
-     */
-    void distanceFloodFill ( GridMap<double>* map, Eigen::Vector2i start );
-
-    /** @brief Compute map needed for path calculation */
-    void computePathTransform();
-
-    /** @brief Compute map needed for exploration path calculation */
-    void computeExplorationTransform();
-
-    /** @brief Compute the distances to the next obstacle with eucledian distance transform from m_OccupancyMap. */
-    void computeObstacleTransform();
-
-    /** @brief Compute cost function based on obstacle transform */
-    void computeCostTransform();
-
-    /** @brief Compute the frontiers between free and unknown space. Depends on OccupancyMap and ObstacleTransform. */
-    void computeFrontierMap();
-
-    /** @brief Compute the target region (a circle of radius m_DesiredDistance around m_Target). */
-    void computeRegionMap();
-
-    /** @brief Compute the target map, which is either a frontier map or a region map. */
-    void computeTargetMap();
-
-    /** @brief Compute a map of driving distances from the start point */
-    void computeDrivingDistanceTransform();
-
-    /** @brief Compute a map of driving distances to the target point */
-    void computeTargetDistanceTransform();
-
-    /** @brief Compute maps needed for isWalkable */
-    void computeWalkableMaps();
-
-    /** @brief Compute maps needed for isApproachable */
-    void computeApproachableMaps();
-
-    /** @brief Start point for the way search algorithm. */
-    Eigen::Vector2i m_Start;
-
-    /** @brief Target for the way search algorithm */
-    Eigen::Vector2i m_Target;
-
-    /** @brief Desired distance to target in pixels */
-    int m_DesiredDistance;
-
-    /** @brief Occupancy map */
-    GridMap<int8_t>* m_OccupancyMap;
-
-    /** @see computeObstacleTransform */
-    GridMap<double>* m_ObstacleTransform;
-
-    /** @see computeCostTransform */
-    GridMap<double>* m_CostTransform;
-
-    /** @see computeTargetMap */
-    GridMap<bool>* m_TargetMap;
-
-    /** computeDrivingDistanceTransform */
-    GridMap<double>* m_DrivingDistanceTransform;
-
-    /** @see computeTargetDistanceTransform */
-    GridMap<double>* m_TargetDistanceTransform;
-
-    /** @see computePathTransform */
-    GridMap<double>* m_PathTransform;
-
-    /** @see computeExplorationTransform */
-    GridMap<double>* m_ExplorationTransform;
-
-    /** @see constructor */
-    double m_MinAllowedObstacleDistance;
-    double m_MaxAllowedObstacleDistance;
-
-    double m_MinSafeObstacleDistance;
-    double m_MaxSafeObstacleDistance;
-
-    /**
-     * Weight for safer path
-     */
-    double m_SafePathWeight;
-
-    /**
-     * Factor for minObstacleDistance that determines if a frontier pixel is valid
-     */
-    double m_FrontierSafenessFactor;
-
-    /**
-     * Real-world pose of the point (0,0) in the map
-     */
-    geometry_msgs::Pose m_Origin;
-
-};
-
-#endif
-
diff --git a/homer_nav_libs/src/Explorer/GridMap.h b/homer_nav_libs/src/Explorer/GridMap.h
deleted file mode 100644
index 64b3469e..00000000
--- a/homer_nav_libs/src/Explorer/GridMap.h
+++ /dev/null
@@ -1,575 +0,0 @@
-#ifndef   GridMap_H
-#define   GridMap_H
-
-#include <float.h>
-#include <iostream>
-#include <sstream>
-
-#include "ros/ros.h"
-
-#include <Eigen/Geometry>
-
-#define GRIDMAP_SAFE_ACCESS
-
-/**
- * @class  GridMap
- * @author Malte Knauf, Stephan Wirth, David Gossow (RX)
- * @brief  GridMap data structure. Implemeted as template class. The template type
- *         defines the data type of each map cell.
- */
-
-template<class DataT>
-class GridMap
-{
-
-	public:
-
-		/// Initialize empty map
-		GridMap();
-
-		/**
-		 * @param width Width of the map.
-		 * @param height Height of the map.
-		 * @param data Pointer to map data, must be of size width*height.
-		 * @param copyData if true, the map data will be copied
-		 *                 if false, GridMap takes ownership of the pointer
-         * @param cellSize physical size of each map cell [m]
-		 * @param centerX,centerY center of the map in world coordinates
-		 */
-		GridMap ( int width, int height, DataT* data = 0, bool copyData = true, float cellSize = 1, float centerX = 0, float centerY = 0 );
-
-		/// Copy data from given region
-        GridMap ( int width, int height, DataT* data, Eigen::AlignedBox2i extractRegion );
-
-		/// Copy data from given map
-		GridMap<DataT> ( const GridMap<DataT>& other ) { m_Data=0; *this = other; }
-
-		/// Copy data from given map
-		GridMap<DataT>& operator= ( const GridMap<DataT>& other );
-
-        ~GridMap();
-
-		/// Convert map coordinates to world coordinates
-		void mapToWorld ( int mapX, int mapY, float& worldX, float& worldY );
-
-		/// Convert world coordinates to map coordinates
-		void worldToMap ( float worldX, float worldY, int& mapX, int& mapY );
-
-		/// @brief set value at given position
-		inline void setValue ( int x, int y, DataT val );
-
-		/// @brief replace content with given value
-		void fill ( DataT val );
-		
-		/// @brief Draw a filled polygon into the map (world coords)
-        void drawPolygon ( std::vector<Eigen::Vector2d> vertices, DataT value );
-
-		/// @brief Draw a filled circle into the map (world coords)
-        void drawCircle( Eigen::Vector2d center, float radius, DataT value );
-
-		/// @return Value at the given position.
-		inline DataT getValue ( int x, int y ) const;
-
-		/// @return Pointer to given pixel
-        inline DataT* getDirectAccess ( int x, int y );
-
-		/// @return width in grid cells
-		int width() const { return m_Width; }
-
-		/// @return height in grid cells
-		int height() const { return m_Height; }
-
-  /// @return center of the map in world coordinates
-  Eigen::Vector2d center() const {return Eigen::Vector2d(m_CenterX,m_CenterY);}
-
-		/// @return side length of one cell in mm
-		float cellSize() { return m_CellSize; }
-
-	private:
-
-		void drawLine ( DataT *data, int startX, int startY, int endX, int endY, DataT value );
-		void fillPolygon ( DataT* data, int x, int y, char value );
-
-		int m_Width;
-		int m_Height;
-		int m_DataSize;
-		DataT* m_Data;
-		float m_CellSize;
-		float m_CenterX;
-		float m_CenterY;
-};
-
-
-template<class DataT>
-GridMap<DataT>::GridMap()
-{
-	m_Width = 0;
-	m_Height = 0;
-	m_DataSize = 0;
-	m_Data = 0;
-	m_CellSize = 0;
-	m_CenterX = 0;
-	m_CenterY = 0;
-}
-
-template<class DataT>
-GridMap<DataT>::GridMap ( int width, int height, DataT* data, bool copyData, float cellSize, float centerX, float centerY )
-{
-	m_Width = width;
-	m_Height = height;
-	m_CellSize = cellSize;
-	m_DataSize = width * height;
-	m_CenterX = centerX;
-	m_CenterY = centerY;
-	m_Data = 0;
-
-	if ( data )
-	{
-		if ( copyData )
-		{
-			m_Data = new DataT[m_DataSize];
-
-			for ( int i = 0; i < m_DataSize; i++ )
-			{
-				m_Data[i] = data[i];
-			}
-		}
-		else
-		{
-			m_Data = data;
-		}
-	}
-	else
-	{
-		m_Data = new DataT[m_DataSize];
-
-		for ( int i = 0; i < m_DataSize; i++ )
-		{
-			m_Data[i] = 0;
-		}
-	}
-}
-
-template<class DataT>
-GridMap<DataT>::GridMap (int width, int height, DataT* data, Eigen::AlignedBox2i extractRegion )
-{
-    m_Width = extractRegion.sizes().x();
-    m_Height = extractRegion.sizes().y();
-	m_DataSize = m_Width * m_Height;
-	m_Data = new DataT[m_DataSize];
-	m_CellSize = 1;
-	m_CenterX = 0;
-	m_CenterY = 0;
-
-    for ( int y = extractRegion.min().y(); y <= extractRegion.max().y(); y++ )
-	{
-        int yOffset = m_Width * y;
-
-        for ( int x = extractRegion.min().x(); x <= extractRegion.max().x(); x++ )
-		{
-            int i = x + yOffset;
-			m_Data[i] = data[i];
-		}
-	}
-}
-
-
-template<class DataT>
-inline DataT* GridMap<DataT>::getDirectAccess ( int x, int y )
-{
-#ifdef GRIDMAP_SAFE_ACCESS
-	if ( x >= 0 && x < m_Width && y >= 0 && y < m_Height )
-	{
-        return &m_Data[y * m_Width + x];
-	}
-	else
-	{
-		throw;
-	}
-#else
-    return &m_Data[y * m_Width + x];
-#endif
-}
-
-
-template<class DataT>
-GridMap<DataT>& GridMap<DataT>::operator= ( const GridMap<DataT>& other )
-{
-	delete[] m_Data;
-	m_Width = other.m_Width;
-	m_Height = other.m_Height;
-	m_DataSize = other.m_DataSize;
-	m_Data = new DataT[m_DataSize];
-	memcpy ( m_Data, other.m_Data, sizeof ( DataT ) *m_DataSize );
-	m_CellSize = other.m_CellSize;
-	m_CenterX = other.m_CenterX;
-	m_CenterY = other.m_CenterY;
-  return *this;
-}
-/* TODO
-template<class DataT>
-GridMap<DataT>::GridMap ( ExtendedInStream& strm )
-{
-	short version;
-	strm >> version;
-	strm >> m_Width;
-	strm >> m_Height;
-	strm >> m_CellSize;
-	strm >> m_CenterX;
-	strm >> m_CenterY;
-	m_DataSize = m_Width * m_Height;
-	m_Data = new DataT[m_DataSize];
-	strm.get ( m_Data, m_DataSize );
-}
-*/
-template<class DataT>
-GridMap<DataT>::~GridMap()
-{
-	if ( m_Data )
-	{
-		delete m_Data;
-		m_Data = 0;
-	}
-}
-/*
-template<class DataT>
-void GridMap<DataT>::storer ( ExtendedOutStream& strm ) const
-{
-	strm << short ( 12 );
-	strm << m_Width;
-	strm << m_Height;
-	strm << m_CellSize;
-	strm << m_CenterX;
-	strm << m_CenterY;
-	strm.put ( m_Data, m_DataSize );
-}
-*/
-
-template<class DataT>
-void GridMap<DataT>::mapToWorld ( int mapX, int mapY, float& worldX, float& worldY )
-{
-	worldX = m_CenterX + m_CellSize * ( mapX - m_Width / 2 );
-	worldY = m_CenterY + m_CellSize * ( mapY - m_Height / 2 );
-}
-
-template<class DataT>
-void GridMap<DataT>::worldToMap ( float worldX, float worldY, int& mapX, int& mapY )
-{
-	mapX = float ( m_Width ) / 2.0  - ( ( worldY - m_CenterY ) / m_CellSize + 0.5 );
-	mapY = float ( m_Height ) / 2.0 - ( ( worldX - m_CenterX ) / m_CellSize + 0.5 );
-
-	if ( mapX < 0 || mapX >= m_Width || mapY < 0 || mapY >= m_Height )
-	{
-                //ROS_WARN_STREAM ( "Index out of bounds: " << mapX << "," << mapY ); //TODO
-
-		if ( mapX < 0 )
-		{
-			mapX = 0;
-		}
-
-		if ( mapX >= m_Width )
-		{
-			mapX = m_Width - 1;
-		}
-
-		if ( mapY < 0 )
-		{
-			mapY = 0;
-		}
-
-		if ( mapY >= m_Height )
-		{
-			mapY = m_Height - 1;
-		}
-	}
-}
-
-
-template<class DataT>
-inline void GridMap<DataT>::setValue ( int x, int y, DataT val )
-{
-#ifdef GRIDMAP_SAFE_ACCESS
-	if ( x >= 0 && x < m_Width && y >= 0 && y < m_Height )
-	{
-        m_Data[y * m_Width + x] = val;
-	}
-	else
-	{
-		throw;
-	}
-#else
-    m_Data[y * m_Width + x] = val;
-#endif
-}
-
-template<class DataT>
-inline DataT GridMap<DataT>::getValue ( int x, int y ) const
-{
-#ifdef GRIDMAP_SAFE_ACCESS
-	if ( x >= 0 && x < m_Width && y >= 0 && y < m_Height )
-	{
-        return  m_Data[y * m_Width + x];
-	}
-	else
-	{
-                ROS_ERROR_STREAM( "Accessing map pixels " << x << "," << y << ": out of bounds (0,0," << m_Width-1 << "," << m_Height-1 << ")" ); //TODO
-		throw;
-	}
-#else
-    return  m_Data[y * m_Width + x];
-#endif
-}
-
-template<class DataT>
-void GridMap<DataT>::fill ( DataT val )
-{
-	for ( int i = 0; i < m_DataSize; i++ )
-	{
-		m_Data[i] = val;
-	}
-}
-
-/* TODO do we need image representation?
-template<class DataT>
-puma2::ColorImageRGB8* GridMap<DataT>::getImage ( DataT specialValue, DataT clipRangeLow, DataT clipRangeHigh )
-{
-	puma2::ColorImageRGB8* image = new puma2::ColorImageRGB8 ( m_Width, m_Height );
-	double maxVal = 0.0001;
-	double minVal = 0.0;
-
-	for ( int i = 0; i < m_DataSize; i++ )
-    {
-		if ( ( m_Data[i] < minVal ) && ( m_Data[i] != specialValue ) )
-		{
-			minVal = m_Data[i];
-		}
-
-		if ( ( m_Data[i] > maxVal ) && ( m_Data[i] != specialValue ) )
-		{
-			maxVal = m_Data[i];
-		}
-	}
-
-	std::ostringstream stream;
-
-	stream << " Min: " << minVal << "Max: " << maxVal;
-	stream << " ClipMin: " << double ( clipRangeLow ) << " ClipMax: " << double ( clipRangeHigh );
-        ROS_DEBUG_STREAM ( stream.str() ); //TODO: was TRACE_SYSTEMINFO
-
-	if ( maxVal > clipRangeHigh )
-	{
-		maxVal = clipRangeHigh;
-	}
-
-	if ( minVal < clipRangeLow )
-	{
-		minVal = clipRangeLow;
-	}
-
-	double range = maxVal - minVal;
-
-	puma2::ColorImageRGB8::PixelType* imageData;
-	imageData = image->unsafeRowPointerArray() [0];
-
-	for ( int i = 0; i < m_DataSize; i++ )
-	{
-		DataT currentValue = m_Data[i];
-
-		if ( currentValue == specialValue )
-		{
-			imageData[i][0] = 40;
-			imageData[i][1] = 220;
-			imageData[i][2] = 120;
-			continue;
-		}
-
-		if ( currentValue > clipRangeHigh )
-		{
-			imageData[i][0] = 200;
-			imageData[i][1] = 200;
-			imageData[i][2] = 128;
-			continue;
-		}
-
-		if ( currentValue < clipRangeLow )
-		{
-			imageData[i][0] = 40;
-			imageData[i][1] = 40;
-			imageData[i][2] = 180;
-			continue;
-		}
-
-		double valueDouble  = ( ( double ) ( currentValue - minVal ) ) / range;
-
-		unsigned char value = ( unsigned char ) ( valueDouble * 255 );
-
-		imageData[i][0] = value;
-		imageData[i][1] = value;
-		imageData[i][2] = value;
-	}
-
-	return image;
-}
-*/
-
-
-
-template<class DataT>
-void GridMap<DataT>::drawCircle(Eigen::Vector2d center, float radius, DataT value )
-{
-	int centerMapX,centerMapY;
-	worldToMap( center.x(), center.y(), centerMapX, centerMapY );
-	
-	int radiusCells = radius / m_CellSize;
-	int radiusCells2 = radiusCells*radiusCells;
-	
-    Eigen::AlignedBox2i bBox( Eigen::Vector2i(centerMapX - radiusCells, centerMapY - radiusCells), Eigen::Vector2i(centerMapX + radiusCells, centerMapY + radiusCells) );
-    Eigen::AlignedBox2i bBoxGrid( Eigen::Vector2i(0,0), Eigen::Vector2i(m_Width-1,m_Height-1) );
-    bBox.clamp( bBoxGrid );
-	
-    for ( int y = bBox.min().y(); y <= bBox.max().y(); y++ )
-	{
-        for ( int x = bBox.min().x(); x <= bBox.max().x(); x++ )
-		{
-			int xC = x-centerMapX;
-            int yC = y-centerMapY;
-			if ( xC*xC+yC*yC <= radiusCells2 )
-			{
-				setValue( x, y, value );
-			}
-		}
-	}
-}
-
-
-template<class DataT>
-void GridMap<DataT>::drawPolygon (std::vector<Eigen::Vector2d> vertices, DataT value )
-{
-  if ( vertices.size() == 0 )
-  {
-    ROS_INFO( "No vertices given!" );
-    return;
-  }
-	//make temp. map
-	DataT* data = new DataT[ m_DataSize ];
-	for ( int i = 0; i < m_DataSize; i++ )
-	{
-		data[i] = 0;
-	}
-	
-  //draw the lines surrounding the polygon
-  for ( unsigned int i = 0; i < vertices.size(); i++ )
-  {
-		int i2 = ( i+1 ) % vertices.size();
-		int startX,startY,endX,endY;
-		worldToMap( vertices[i].x(), vertices[i].y(), startX, startY );
-		worldToMap( vertices[i2].x(), vertices[i2].y(), endX, endY );
-    drawLine ( data, startX, startY, endX, endY, 1 );
-  }
-  //claculate a point in the middle of the polygon
-  float midX = 0;
-  float midY = 0;
-  for ( unsigned int i = 0; i < vertices.size(); i++ )
-  {
-    midX += vertices[i].x();
-    midY += vertices[i].y();
-  }
-  midX /= vertices.size();
-  midY /= vertices.size();
-	int midMapX,midMapY;
-	worldToMap( midX, midY, midMapX, midMapY );
-  //fill polygon
-  fillPolygon ( data, midMapX, midMapY, 1 );
-	
-	//copy polygon to map
-	for ( int i = 0; i < m_DataSize; i++ )
-	{
-		if ( data[i] != 0 )
-		{
-			m_Data[i] = value;
-		}
-	}
-	
-	delete[] data;
-}
-
-template<class DataT>
-void GridMap<DataT>::fillPolygon ( DataT* data, int x, int y, char value )
-{
-  int index = x + m_Width * y;
-  if ( value != data[index] )
-  {
-    data[index] = value;
-    fillPolygon ( data, x + 1, y, value );
-    fillPolygon ( data, x - 1, y, value );
-    fillPolygon ( data, x, y + 1, value );
-    fillPolygon ( data, x, y - 1, value );
-  }
-}
-
-
-template<class DataT>
-void GridMap<DataT>::drawLine ( DataT *data, int startX, int startY, int endX, int endY, DataT value )
-{
-  //bresenham algorithm
-  int x, y, t, dist, xerr, yerr, dx, dy, incx, incy;
-  // compute distances
-  dx = endX - startX;
-  dy = endY - startY;
-
-  // compute increment
-  if ( dx < 0 )
-  {
-    incx = -1;
-    dx = -dx;
-  }
-  else
-  {
-    incx = dx ? 1 : 0;
-  }
-
-  if ( dy < 0 )
-  {
-    incy = -1;
-    dy = -dy;
-  }
-  else
-  {
-    incy = dy ? 1 : 0;
-  }
-
-  // which distance is greater?
-  dist = ( dx > dy ) ? dx : dy;
-  // initializing
-  x = startX;
-  y = startY;
-  xerr = dx;
-  yerr = dy;
-
-  // compute cells
-  for ( t = 0; t < dist; t++ )
-  {
-    data[x + m_Width * y] = value;
-		
-    xerr += dx;
-    yerr += dy;
-    if ( xerr > dist )
-    {
-      xerr -= dist;
-      x += incx;
-    }
-    if ( yerr > dist )
-    {
-      yerr -= dist;
-      y += incy;
-    }
-  }
-}
-
-
-
-#endif
-
-#ifdef GRIDMAP_SAFE_ACCESS
-#undef GRIDMAP_SAFE_ACCESS
-#endif
diff --git a/homer_nav_libs/src/Math/Box2D.h b/homer_nav_libs/src/Math/Box2D.h
deleted file mode 100644
index 5979b68a..00000000
--- a/homer_nav_libs/src/Math/Box2D.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- *  Box2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: Box2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef Box2D_H
-#define Box2D_H
-
-#include "Point2D.h"
-#include <vector>
-
-/**
- * @class  Box2D
- * @author David Gossow (RX)
- * @brief  Represents a box given by the upper-left and lower-right corner
- */
-template<class T=float>
-class Box2D
-{
-
-  public:
-
-    /** @brief Creates a box given by top-left (minX,minY) and lower-right (maxX,maxY) coordinates */
-    Box2D(T minX=0, T minY=0, T maxX=0, T maxY=0);
-
-    /** @brief The destructor */
-    ~Box2D() {};
-
-    inline void setMinX(T value) { m_MinX=value; }
-    inline void setMaxX(T value) { m_MaxX=value; }
-    inline void setMinY(T value) { m_MinY=value; }
-    inline void setMaxY(T value) { m_MaxY=value; }
-
-    inline T minX() const { return m_MinX; }
-    inline T maxX() const { return m_MaxX; }
-    inline T minY() const { return m_MinY; }
-    inline T maxY() const { return m_MaxY; }
-
-    inline T width() const { return m_MaxX-m_MinX; }
-    inline T height() const { return m_MaxY-m_MinY; }
-
-    std::vector< Point2D > vertices();
-
-    /** @brief Clip the box to fit into clipArea */
-    void clip( Box2D<T> clipArea );
-
-    /** @return true if the given point is inside the box */
-    bool contains( T x, T y );
-
-    /** @brief enlarge the box by 'size' units in all directions */
-    void expand( T size );
-
-    /** @brief shrink the box by 'size' units in all directions */
-    void shrink( T size );
-
-    /** @brief expand the box so that it contains the given point */
-    void enclose( Point2D point );
-    void enclose( T x, T y );
-
-    template<class OtherT>
-    void enclose( Box2D<OtherT> box );
-
-    Point2D centerPoint()
-    {
-        Point2D center;
-        center.setX(m_MinX + ( (m_MaxX - m_MinX) / 2 ) );
-        center.setY(m_MinY + ( (m_MaxY - m_MinY) / 2 ) );
-        return center;
-    }
-
-    /** @brief area covered by the box */
-    T area();
-
-    Box2D<T>& operator/= ( T div ) { m_MinX/=div; m_MinY/=div; m_MaxX/=div; m_MaxY/=div; return *this; }
-    Box2D<T>& operator*= ( T div ) { m_MinX*=div; m_MinY*=div; m_MaxX*=div; m_MaxY*=div; return *this; }
-
-  private:
-
-    T m_MinX;
-    T m_MaxX;
-    T m_MinY;
-    T m_MaxY;
-
-};
-
-template<class T>
-Box2D<T>::Box2D(T minX, T minY, T maxX, T maxY)
-{
-  m_MinX=minX;
-  m_MinY=minY;
-  m_MaxX=maxX;
-  m_MaxY=maxY;
-}
-
-template<class T>
-void Box2D<T>::clip( Box2D<T> clipArea )
-{
-  if (m_MinX < clipArea.minX()) { m_MinX=clipArea.minX(); }
-  if (m_MinY < clipArea.minY()) { m_MinY=clipArea.minY(); }
-  if (m_MaxX > clipArea.maxX()) { m_MaxX=clipArea.maxX(); }
-  if (m_MaxY > clipArea.maxY()) { m_MaxY=clipArea.maxY(); }
-}
-
-template<class T>
-bool Box2D<T>::contains( T x, T y )
-{
-  return ( (x>=m_MinX) && (x<=m_MaxX) && (y>=m_MinY) && (y<=m_MaxY) );
-}
-
-template<class T>
-    void Box2D<T>::expand( T size )
-{
-  m_MinX-=size;
-  m_MaxX+=size;
-  m_MinY-=size;
-  m_MaxY+=size;
-}
-
-template<class T>
-void Box2D<T>::shrink( T size )
-{
-  m_MinX+=size;
-  m_MaxX-=size;
-  m_MinY+=size;
-  m_MaxY-=size;
-}
-
-template<class T>
-T Box2D<T>::area()
-{
-  T width = m_MaxX - m_MinX;
-  T height = m_MaxY - m_MinY;
-
-  T capacity = width * height;
-
-  return (T) capacity;
-}
-
-template<class T>
-void Box2D<T>::enclose( Point2D point )
-{
-  if ( m_MinX > point.x() ) { m_MinX=point.x(); }
-  if ( m_MinY > point.y() ) { m_MinY=point.y(); }
-  if ( m_MaxX < point.x() ) { m_MaxX=point.x(); }
-  if ( m_MaxY < point.y() ) { m_MaxY=point.y(); }
-}
-
-template<class T>
-void Box2D<T>::enclose( T x, T y )
-{
-  if ( m_MinX > x ) { m_MinX=x; }
-  if ( m_MinY > y ) { m_MinY=y; }
-  if ( m_MaxX < x ) { m_MaxX=x; }
-  if ( m_MaxY < y ) { m_MaxY=y; }
-}
-
-template<class T>
-template<class OtherT>
-void Box2D<T>::enclose( Box2D<OtherT> box )
-{
-  enclose( box.minX(), box.minY() );
-  enclose( box.maxX(), box.maxY() );
-}
-
-
-template<class T>
-std::vector< Point2D > Box2D<T>::vertices()
-{
-  std::vector<Point2D> myVertices(5);
-  myVertices[0]=Point2D( m_MinX-0.5, m_MinY-0.5 );
-  myVertices[1]=Point2D( m_MinX-0.5, m_MaxY+0.5 );
-  myVertices[2]=Point2D( m_MaxX+0.5, m_MaxY+0.5 );
-  myVertices[3]=Point2D( m_MaxX+0.5, m_MinY-0.5 );
-  myVertices[4]=myVertices[0];
-  return myVertices;
-}
-
-
-#endif
diff --git a/homer_nav_libs/src/Math/CMakeLists.txt b/homer_nav_libs/src/Math/CMakeLists.txt
deleted file mode 100644
index b9f092ea..00000000
--- a/homer_nav_libs/src/Math/CMakeLists.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-set(Math_SRC
-  Line2D.cpp
-  Transformation2D.cpp
-  Pose.cpp
-  Math.cpp
-  Point2D.cpp
-)
-
-add_library(MappingMath ${Math_SRC})
diff --git a/homer_nav_libs/src/Math/Line2D.cpp b/homer_nav_libs/src/Math/Line2D.cpp
deleted file mode 100644
index f5807c31..00000000
--- a/homer_nav_libs/src/Math/Line2D.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- *  Line2D.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Information on Code Review state:
- *  Author: SM; DevelTest: Date; Reviewer: Initials; Review: Date; State: NOK
- *
- *  Additional information:
- *  $Id: Line2D.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <iostream>
-#include <sstream>
-
-#include "Line2D.h"
-#include "vec2.h"
-
-#define THIS Line2D
-
-float THIS::gradient() const
-{
-  float gradient = 10000000.0;
-  if ( m_Vec[0] != 0.0 )
-  {
-    gradient = m_Vec[1]/m_Vec[0];
-  }
-  return gradient;
-}
-
-std::vector< Point2D > THIS::vertices ( unsigned substeps )
-{
-  unsigned steps = substeps+2;
-  std::vector<Point2D> myVertices ( steps );
-  for ( unsigned i=0; i<steps; i++ )
-  {
-    float t= float ( i ) / float ( steps-1 );
-    myVertices[i] = m_Start + t*m_Vec;
-  }
-  return myVertices;
-}
-
-Point2D THIS::getClosestPoint ( Point2D point ) const
-{
-  float t = ( point-m_Start ) * m_Vec;
-  t /= m_Vec * m_Vec;
-  if ( t > 1.0 )
-  {
-    t = 1.0;
-  }
-  else if ( t < 0.0 )
-  {
-    t = 0.0;
-  }
-  Point2D pointOnLine = m_Start + ( t * m_Vec );
-  return pointOnLine;
-}
-
-Point2D THIS::getIntersectionPoint ( Line2D line ) const
-{
-  Point2D intersecPoint;
-  double det1 = m_Vec.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * m_Vec.y();
-  // lines are not parallel
-  if ( det1 != 0 )
-  {
-    CVec2 startToStart = line.start() -m_Start;
-    // calculate intersection
-    double lambda = ( startToStart.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * startToStart.y() ) / det1;
-    intersecPoint = m_Start + lambda* m_Vec;
-  }
-
-  return intersecPoint;
-}
-
-float THIS::getIntersectionPointParameter ( Line2D line ) const
-{
-  double lambda = 0.0;
-  double det1 = m_Vec.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * m_Vec.y();
-  // lines are not parallel
-  if ( det1 != 0 )
-  {
-    CVec2 startToStart = line.start() -m_Start;
-    // calculate intersection
-    lambda = ( startToStart.x() * ( -line.vec().y() ) - ( -line.vec().x() ) * startToStart.y() ) / det1;
-  }
-
-  return lambda;
-}
-
-std::string THIS::toString() const
-{
-  std::ostringstream str;
-//   str << "Startpoint: " << m_Start.x() << " " << m_Start.y() << " Endpoint: " << end().x() << " " << end().y() <<
-//   " Vector: " << m_Vec.x() << " " << m_Vec.y() << " ";
-  str << m_Start.x() << " " << m_Start.y() << std::endl << end().x() << " " << end().y() << std::endl;
-  return str.str();
-}
-
diff --git a/homer_nav_libs/src/Math/Line2D.h b/homer_nav_libs/src/Math/Line2D.h
deleted file mode 100644
index e8c210bb..00000000
--- a/homer_nav_libs/src/Math/Line2D.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- *  Line2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Information on Code Review state:
- *  Author: SM; DevelTest: Date; Reviewer: Initials; Review: Date; State: NOK
- *
- *  Additional information:
- *  $Id: Line2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef LINE2D_H
-#define LINE2D_H
-
-#include "vec2.h"
-#include "mat2.h"
-#include "Point2D.h"
-#include <vector>
-
-/**
- * @class Line2D
- *
- * @author Susanne Maur
- *
- */
-class Line2D
-{
-
-  public:
-
-    /**
-     * Creates a new line.
-     * @param start Start point of the line.
-     * @param end End point of the line.
-     */
-    inline Line2D ( Point2D start, Point2D end )
-    {
-      m_Start = start;
-      m_Vec = end-m_Start;
-    }
-
-
-    /**
-      * Creates a new line.
-      * @param start Start point of the line.
-      * @param vec The vector from start to end point of the line.
-      */
-    inline Line2D ( Point2D start,  CVec2 vec )
-    {
-      m_Start = start;
-      m_Vec = vec;
-    }
-
-    /**
-     * Destructor does nothing.
-     */
-    inline ~Line2D() {}
-
-    /**
-     * Sets the start point of the line to a new value.
-     * @param start Start point of the line.
-     */
-    inline void setStart ( const Point2D start )
-    {
-      Point2D end = m_Start + m_Vec;
-      m_Start = start;
-      m_Vec = end-m_Start;
-    }
-
-    /**
-     * Sets the end point of the line to a new value.
-     * @param end End point of the line.
-     */
-
-    inline void setEnd ( const Point2D end )
-    {
-      m_Vec = end - m_Start;
-    }
-
-    /**
-     * Returns the start point of the line.
-     * @return Start point of the line.
-     */
-    inline Point2D start() const
-    {
-      return m_Start;
-    }
-
-    /**
-     * Returns the end point of the line.
-     * @return End point of the line.
-     */
-    inline Point2D end() const
-    {
-      return m_Start + m_Vec;
-    }
-
-    /**
-     * Returns a vector from the start to the end of the line.
-     * @return Vector to the end point of the line.
-     */
-    inline CVec2 vec() const
-    {
-      return m_Vec;
-    }
-
-    inline bool operator== ( const Line2D& line ) const
-    {
-      return ( m_Start == line.start() && end() == line.end() );
-    }
-
-    /**
-     * Returns the gradient of the line.
-     * @return Gradient of the line.
-     */
-    float gradient() const ;
-
-    /**
-    * Returns the length of the line.
-    * @return Length of the line.
-     */
-    inline float length() const {
-      return m_Vec.magnitude();
-    }
-
-    /**
-     * Returns the minimum  euclidean distance of the given point to the line.
-     * @param point Point of which the distance to the line will be calculated.
-     * @return Distance of point to line.
-     */
-    inline float distance ( Point2D point ) const
-    {
-      Point2D pointOnLine = getRootPoint ( point );
-      return ( point - pointOnLine ).magnitude();
-    }
-
-    /**
-     * Rotates the line round the origin.
-     * @param angle The angle of rotation in radiants.
-     */
-    inline void rotate ( float angle )
-    {
-      CMat2 rotMat = CMat2 ( angle );
-      m_Start = rotMat * m_Start;
-      m_Vec = rotMat * m_Vec;
-    }
-
-    /**
-     * Returns the point of the line with the minimal distance to a given point.
-     * This algorithm may return a point which lies on the extension of the line and not on itself.
-     * See also: getClosestPoint.
-     * @param point Point to which the distance is calculated.
-     * @return Root point of the line.
-     */
-    inline Point2D getRootPoint ( Point2D point ) const
-    {
-      float t = ( point-m_Start ) * m_Vec;
-      t /= m_Vec * m_Vec;
-      Point2D pointOnLine = m_Start + ( t * m_Vec );
-      return pointOnLine;
-    }
-
-    /**
-     * Returns the normal of the line.
-     * @return Normal of the line.
-     */
-    inline CVec2 getNormal() const {
-      return m_Vec.getNormal()/m_Vec.magnitude();
-    }
-
-    /**
-    * Returns the point of the line with the minimal distance to a given point.
-    * This algorithm returns always a point which lies on the line.
-    * Therefor it is not always the root point.
-    * See also: getRootPoint.
-    * @param point Point to which the distance is calculated.
-    * @return Root point of the line.
-     */
-    Point2D getClosestPoint ( Point2D point ) const;
-
-    /**
-    * Returns the intersection point of this line with a second line.
-    * The intersection point is element of this line.
-    * @param line The line with which the intersection is calculated.
-    * @return Intersection point.
-     */
-    Point2D getIntersectionPoint ( Line2D line ) const;
-
-    /**
-     * Returns the parameter t which identifies the intersection point of this line with a second line.
-     * The intersection point is element of this line.
-     * @param line The line with which the intersection is calculated.
-     * @return Parameter t which identifies the intersection point on the line.
-     */
-    float getIntersectionPointParameter ( Line2D line ) const;
-
-    /**
-     * @return Vertices, e.g. for use in a VectorObject
-     * @param  substeps number of linear interpolation steps between start and end
-     */
-    std::vector< Point2D > vertices ( unsigned substeps=0 );
-
-    /**
-     * @overwrite
-     */
-    std::string toString() const;
-
-  private:
-
-    /**
-     * Start point of the line.
-     */
-    Point2D m_Start;
-
-    /**
-     * Vector from the start to the end of the line.
-     */
-    CVec2 m_Vec;
-};
-
-#endif
diff --git a/homer_nav_libs/src/Math/Math.cpp b/homer_nav_libs/src/Math/Math.cpp
deleted file mode 100644
index 3f31c5bf..00000000
--- a/homer_nav_libs/src/Math/Math.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- *  Math.cpp
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $ 
- *******************************************************************************/
-
-#include <limits.h>
-#include "Math.h"
-#include <math.h>
-
-#include "vec2.h"
-
-#define THIS Math
-
-THIS::THIS()
-{
-}
-
-THIS::~THIS()
-{
-}
-
-float THIS::meanAngle( const std::vector<float>& angles )
-{
-  //calculate vectors from angles
-  CVec2 vectorSum(0,0);
-  for ( unsigned i=0; i<angles.size(); i++ )
-  {
-    vectorSum = vectorSum + CVec2( cos( angles[i] ), sin ( angles[i] ) );
-  }
-  //return vectorSum.getAngle( CVec2(1,0) );
-  if ( vectorSum.magnitude() == 0 ) { return 0; }
-  return atan2( vectorSum.y(), vectorSum.x() );
-}
-
-
-float THIS::meanAngleWeighted( const std::vector< WeightedValue >& weightedAngles )
-{
-  //calculate vectors from angles
-  CVec2 vectorSum(0,0);
-  for ( unsigned i=0; i<weightedAngles.size(); i++ )
-  {
-    vectorSum = vectorSum + weightedAngles[i].weight * CVec2( cos( weightedAngles[i].value ), sin ( weightedAngles[i].value ) );
-  }
-  //return vectorSum.getAngle( CVec2(1,0) );
-  if ( vectorSum.magnitude() == 0 ) { return 0; }
-  return atan2( vectorSum.y(), vectorSum.x() );
-}
-
-
-float THIS::angleVariance( float meanAngle, const std::vector<float>& angles )
-{
-  float quadSum=0;
-  for( unsigned i=0; i < angles.size(); i++ )
-  {
-    float turnAngle=minTurnAngle( angles[i], meanAngle );
-    quadSum += turnAngle*turnAngle;
-  }
-  return quadSum / float ( angles.size() );
-}
-
-
-float THIS::minTurnAngle( float angle1, float angle2 )
-{
-/*  CVec2 vector1( cos( angle1 ), sin ( angle1 ) );
-  CVec2 vector2( cos( angle2 ), sin ( angle2 ) );
-  return vector1.getAngle( vector2 );
-  */
-  angle1 *= 180.0/M_PI;
-  angle2 *= 180.0/M_PI;
-  //if(angle1 < 0) angle1 += M_PI * 2;
-  //if(angle2 < 0) angle2 += M_PI * 2;
-  int diff= angle2 - angle1;
-  diff = (diff + 180) % 360 - 180;
-
-  //float sign=1;
-  //if ( diff < 0 ) { sign=-1; }
-  //minimal turn angle:
-  //if the absolute difference is above 180°, calculate the difference in other direction
-  //if ( fabs(diff) > M_PI ) {
-  //  diff = 2*M_PI - fabs(diff);
-  //  diff *= sign;
-  //}
-
-  float ret = static_cast<double>(diff) * M_PI/180.0;
-  return ret;
-}
-
-Point2D THIS::center( std::vector<Point2D>& points )
-{
-  double numPoints = double( points.size() );
-  double sumX=0, sumY=0;
-  for( unsigned i=0; i < points.size(); i++ )
-  {
-    sumX += points[i].x();
-    sumY += points[i].y();
-  }
-  return Point2D( sumX / numPoints, sumY / numPoints );
-}
-
-
-double THIS::randomGauss(float variance)
-{
-  if (variance < 0) {
-    variance = -variance;
-  }
-  double x1, x2, w, y1;
-  do {
-    x1 = 2.0 * random01() - 1.0;
-    x2 = 2.0 * random01() - 1.0;
-    w = x1 * x1 + x2 * x2;
-  } while ( w >= 1.0 );
-
-  w = sqrt((-2.0 * log(w)) / w);
-  y1 = x1 * w;
-  // now y1 is uniformly distributed
-  return sqrt(variance) * y1;
-}
-
-double THIS::random01(unsigned long init)
-{
-  static unsigned long n;
-  if (init > 0) {
-    n = init;
-  }
-  n = 1664525 * n + 1013904223;
-  // create double from unsigned long
-  return (double)(n/2) / (double)LONG_MAX;
-}
-
-#undef THIS
diff --git a/homer_nav_libs/src/Math/Math.h b/homer_nav_libs/src/Math/Math.h
deleted file mode 100644
index bf00135a..00000000
--- a/homer_nav_libs/src/Math/Math.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- *  Math.h
- *
- *  (C) 2007 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $
- *******************************************************************************/
-
-#ifndef Math_H
-#define Math_H
-
-#include <vector>
-#include "Point2D.h"
-
-/**
- * @class  Math
- * @brief  Generic math and statistics functions
- * @author David Gossow (RX)
- */
-class Math
-{
-  public:
-
-    struct WeightedValue
-    {
-      float value;
-      float weight;
-    };
-
-    static const double Pi = 3.14159265358979323846;
-
-    /** @return mean value */
-    template<class ContainerT>
-    static double mean ( const ContainerT& values );
-
-    /** @return variance of given values */
-    template<class ContainerT>
-    static double variance ( const ContainerT& values );
-
-    /** @return mean angle of given values
-     *  @note   there are always two possible choices for the mean angle. This function returns the one with the smallest deviation
-     *  @note   Works for angles in [-Pi..Pi], negative angles are treated
-     */
-    static float meanAngle ( const std::vector<float>& angles );
-
-    static float meanAngleWeighted ( const std::vector< WeightedValue >& weightedAngles );
-
-    /** @return variance for given mean */
-    static float angleVariance ( float meanAngle, const std::vector<float>& angles );
-
-    /** @return minimal angle needed to turn from angle 1 to angle 2 [-Pi..Pi] */
-    static float minTurnAngle ( float angle1, float angle2 );
-
-    static Point2D center ( std::vector<Point2D>& points );
-
-    static float deg2Rad ( float deg ) { return deg / 180.0*Pi; }
-
-    static float rad2Deg ( float rad ) { return rad / Pi*180.0; }
-
-    static double randomGauss ( float variance = 1.0 );
-
-    static double random01 ( unsigned long init = 0 );
-
-    /** @return ratio between one dimension seen under old viewangle and dimension under new viewangle*/
-    static double angleToPercent ( double newAngle, double oldAngle ) { return tan ( ( Pi / 180.0 ) * newAngle / 2 ) / tan ( ( Pi / 180.0 ) * oldAngle / 2 ); };
-
-    /** @return angle under which the ratio between dimension seen under old viewangle and new viewangle equals percent*/
-    static double percentToAngle ( double percent, double angle ) { return 2* atan ( tan ( ( Pi / 180.0 ) * angle / 2 ) * percent ) * ( 180 / Pi ); };
-
-    /** @return horizontal view angle corresponding to diagonal view angle and aspect ratio (e.g. 4.0/3.0)*/
-    static double horizontalViewAngle ( double diagonalAngle, double aspectRatio ) { return verticalViewAngle ( diagonalAngle, 1.0 / aspectRatio ); };
-
-    /** @return vertical view angle corresponding to diagonal view angle and aspect ratio (e.g. 4.0/3.0)*/
-    static double verticalViewAngle ( double diagonalAngle, double aspectRatio )
-    {
-      return percentToAngle ( 1.0 / sqrt ( pow ( aspectRatio, 2 ) + 1.0 ), diagonalAngle );
-    };
-
-    template<class ValueT>
-    static inline ValueT min ( ValueT a, ValueT b ) { return a < b ? a : b; }
-
-    template<class ValueT>
-    static inline ValueT max ( ValueT a, ValueT b ) { return a > b ? a : b; }
-
-  private:
-
-    /** @brief The constructor */
-    Math();
-
-    /** @brief The destructor */
-    ~Math();
-
-};
-
-template<class ContainerT>
-double Math::mean ( const ContainerT& values )
-{
-  typename ContainerT::const_iterator it;
-  it = values.begin();
-  double sum = 0;
-  while ( it != values.end() )
-  {
-    sum += *it;
-    it++;
-  }
-  return sum / double ( values.size() );
-}
-
-
-template<class ContainerT>
-double Math::variance ( const ContainerT& values )
-{
-  double mean = mean ( values );
-  typename ContainerT::const_iterator it;
-  it = values.begin();
-  double sum = 0;
-  while ( it != values.end() )
-  {
-    double diff = *it - mean;
-    sum += diff * diff;
-    it++;
-  }
-  return sum / double ( values.size() );
-}
-
-
-#endif
diff --git a/homer_nav_libs/src/Math/Pixel.h b/homer_nav_libs/src/Math/Pixel.h
deleted file mode 100644
index 026fd3a6..00000000
--- a/homer_nav_libs/src/Math/Pixel.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- *  Pixel.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Pixel.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef PIXEL_H
-#define PIXEL_H
-
-#include "Point2D.h"
-#include <vector>
-
-/** @class Pixel
-  * @brief Stores discrete pixel coordinates
-  * @author Stephan Wirth, David Gossow (RX)
-  */
-class Pixel {
-
-  public:
-
-    inline Pixel( int x = 0, int y = 0) { m_X = x; m_Y = y; };
-    inline ~Pixel() {};
-
-    inline int x() const { return m_X; }
-    inline int y() const { return m_Y; }
-
-    inline void setX( int x ) { m_X = x; }
-    inline void setY( int y ) { m_Y = y; }
-
-    inline bool operator ==( Pixel& rhs ) { return ( m_X == rhs.m_X ) && ( m_Y == rhs.m_Y ); }
-    inline bool operator !=( Pixel& rhs ) { return ( m_X != rhs.m_X ) || ( m_Y != rhs.m_Y ); }
-    inline Pixel operator *( float rhs ) { return Pixel( m_X * rhs, m_Y * rhs ); }
-    inline Pixel operator /( float rhs ) { return Pixel( m_X / rhs, m_Y / rhs ); }
-
-    inline Point2D toPoint2D() { return Point2D( m_X, m_Y ); }
-    
-    inline std::vector<Point2D> vertices()
-    {
-      std::vector<Point2D> result(5);
-      result[0]=Point2D( m_X-0.5, m_Y-0.5 );
-      result[1]=Point2D( m_X+0.5, m_Y-0.5 );
-      result[2]=Point2D( m_X+0.5, m_Y+0.5 );
-      result[3]=Point2D( m_X-0.5, m_Y+0.5 );
-      result[4]=result[0];
-      return result;
-    }
-
-  private:
-
-    int m_X;
-    int m_Y;
-
-};
-
-
-#endif
diff --git a/homer_nav_libs/src/Math/Point2D.cpp b/homer_nav_libs/src/Math/Point2D.cpp
deleted file mode 100644
index c8ae09b7..00000000
--- a/homer_nav_libs/src/Math/Point2D.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- *  Point2D.cpp
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  Additional information:
- *  $Id: $ 
- *******************************************************************************/
-
-#include "Point2D.h"
-
-#define THIS Point2D 
-
-float THIS::getPolarAngle () const
-{
-  float angle = atan ( m_Y /m_X );
-  if ( m_X < 0 )
-  {
-    angle = - ( M_PI - angle );
-  }
-  while ( angle >= M_PI )
-  {
-    angle -= 2*M_PI;
-  }
-  while ( angle < -M_PI )
-  {
-    angle += 2*M_PI;
-  }
-  return angle;
-}
-
-#undef THIS
diff --git a/homer_nav_libs/src/Math/Point2D.h b/homer_nav_libs/src/Math/Point2D.h
deleted file mode 100644
index 94810ef9..00000000
--- a/homer_nav_libs/src/Math/Point2D.h
+++ /dev/null
@@ -1,312 +0,0 @@
-/*******************************************************************************
- *  Point2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Point2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <iostream>
-#include <sstream>
-
-#include "vec2.h"
-#include <float.h>
-
-#ifndef POINT2D_H
-#define POINT2D_H
-
-/**
- * @class Point2D
- *
- * @author Susanne Maur
- *
- */
-class Point2D
-{
-
-  public:
-
-    /**
-     * Creates a new point in 2D with x- and y-coordinat set to zero.
-     */
-    inline Point2D()
-    {
-      m_X = 0.0;
-      m_Y = 0.0;
-    }
-
-    /**
-    * Creates a new point in 2D.
-    * @param x x-coordinate of the point.
-    * @param y y-coordinate of the point.
-     */
-    inline Point2D ( double x, double y )
-    {
-      m_X = x;
-      m_Y = y;
-    }
-
-
-
-    /**
-     * Copy construcor
-     */
-    inline Point2D (const Point2D& p){
-      m_X = p.x();
-      m_Y = p.y();
-    }
-    
-    /**
-    * Creates a new point in 2D.
-    * @param v Vector form origin to the point.
-     */
-    inline Point2D ( const CVec2& v )
-    {
-      m_X = v[0];
-      m_Y = v[1];
-    }
-
-    /**
-    * Destructor, does nothing.
-     */
-    inline ~Point2D()
-    {
-    }
-
-    /**
-    * Returns the x-coordinate of the point.
-    * @return the x-coordinate of the point.
-     */
-    inline double x() const
-    {
-      return m_X;
-    }
-
-    /**
-    * Returns the y-coordinate of the point.
-    * @return the y-coordinate of the point.
-     */
-    inline double y() const
-    {
-      return m_Y;
-    }
-
-    /**
-    * Sets the x- and y-coordinate of the point to new values.
-    * @param x the new value of the x coordinate.
-    * @param y the new value of the x coordinate.
-     */
-    inline void set ( double x, double y )
-    {
-      m_X = x;
-      m_Y = y;
-    }
-
-    /**
-    * Sets the x-coordinate of the point to a new value.
-    * @param x the new value of the x coordinate.
-     */
-    inline void setX ( double x )
-    {
-      m_X = x;
-    }
-
-    /**
-    * Sets the y-coordinate of the point to a new value.
-    * @param y the new value of the x coordinate.
-     */
-    inline void setY ( double y )
-    {
-      m_Y = y;
-    }
-
-    /**
-     * Overloaded operators.
-     */
-
-    inline Point2D& operator= ( const Point2D& p) {
-      m_X = p.x();
-      m_Y = p.y(); 
-      return *this;
-    }
-
-    inline Point2D operator+ ( const CVec2& v ) const
-    {
-      return Point2D ( m_X + v[0], m_Y + v[1] );
-    }
-
-    inline Point2D operator+ ( const Point2D& p ) const
-    {
-      return Point2D ( m_X + p.x(), m_Y + p.y() );
-    }
-
-    inline CVec2 operator- ( const Point2D& p ) const
-    {
-      return CVec2 ( m_X - p.x(), m_Y - p.y() );
-    }
-
-    inline Point2D operator- ( const CVec2& v ) const
-    {
-      return Point2D ( m_X - v[0], m_Y - v[1] );
-    }
-
-    inline Point2D operator* ( double scalar ) const
-    {
-      return Point2D ( m_X * scalar, m_Y * scalar );
-    }
-
-    inline Point2D operator/ ( double scalar ) const
-    {
-      return Point2D ( m_X / scalar, m_Y / scalar );
-    }
-
-    inline Point2D& operator+= ( const CVec2& v )
-    {
-      m_X += v[0];
-      m_Y += v[1];
-      return ( *this );
-    }
-
-    inline Point2D& operator-= ( const CVec2& v )
-    {
-      m_X -= v[0];
-      m_Y -= v[1];
-      return ( *this );
-    }
-
-    inline Point2D& operator*= ( double scalar )
-    {
-      m_X *= scalar;
-      m_Y *= scalar;
-      return ( *this );
-    }
-
-    inline Point2D& operator/= ( double scalar )
-    {
-      m_X /= scalar;
-      m_Y /= scalar;
-      return ( *this );
-    }
-
-    inline double operator [] ( unsigned int i ) const
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline double& operator [] ( unsigned int i )
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline bool operator== ( const Point2D& point ) const
-    {
-      return ( fabs(m_X - point.x()) < 0.001 && fabs(m_Y - point.y()) < 0.001 );
-    }
-
-    inline bool operator!= ( const Point2D& point ) const
-    {
-      return !((*this)== point);
-    }
-
-    /**
-    * Returns the distance to a given point.
-    * @param point The point to calculate the distance to.
-    * @return the distance between point the two points.
-     */
-    inline double distance ( const Point2D& point ) const
-    {
-      return sqrt ( ( m_X-point.x() ) * ( m_X-point.x() ) + ( m_Y-point.y() ) * ( m_Y-point.y() ) );
-    }
-
-    /**
-    * Returns the distance to origin.
-    * @return the distance between point the two points.
-     */
-    inline double distance ( ) const
-    {
-      return sqrt ( m_X * m_X + m_Y * m_Y );
-    }
-
-    /**
-    * Checks whether two points are equal.
-    * @param p The point to check equality.
-    * @return true if points are equal, false otherwise.
-     */
-    inline bool equal ( const Point2D& point ) const
-    {
-      if ( ( *this - point ).magnitude() < 0.0001 )
-      {
-        return true;
-      }
-      else
-      {
-        return false;
-      }
-    }
-
-    /**
-    * Returns the vector which represents the point in 2D.
-    * @return vector which represents the point in 2D.
-     */
-    inline CVec2 toVector() const
-    {
-      return CVec2 ( m_X, m_Y );
-    }
-
-        /**
-     * Returns the angle of the corresponding polar coordinates.
-     * @return polar angle.
-         */
-    float getPolarAngle () const;
-
-    /**
-    * Rotate by angle (in radiants) around center.
-    * @param center Center of rotation
-    * @param angle Angle in radiants
-     */
-    inline void rotate ( const Point2D& center, float angle )
-    {
-      double x0=m_X-center.m_X;
-      double y0=m_Y-center.m_Y;
-      double xRot =  x0*cos ( angle ) - y0*sin ( angle );
-      double yRot =  x0*sin ( angle ) + y0*cos ( angle );
-      m_X = xRot+center.m_X;
-      m_Y = yRot+center.m_Y;
-    }
-
-    /**
-     * Rotate by angle (in radiants) around (0,0).
-     * @param angle Angle in radiants
-     */
-    inline void rotate ( float angle )
-    {
-      double xRot =  m_X*cos ( angle ) - m_Y*sin ( angle );
-      double yRot =  m_X*sin ( angle ) + m_Y*cos ( angle );
-      m_X = xRot;
-      m_Y = yRot;
-    }
-
-    /**
-    * Returns the string representation of the point.
-    * @return string representation of the point.
-     */
-    inline std::string toString() const
-    {
-      std::ostringstream str;
-      str << m_X << " " << m_Y;
-      return str.str();
-    }
-
-    /** @return "invalid" Point (used as end marker in vector drawings) **/
-    static Point2D invalidPoint() { return Point2D( DBL_MAX, DBL_MAX  ); }
-
-    bool isValid() { return ( ( m_X != DBL_MAX ) || ( m_Y != DBL_MAX ) ); }
-
-  protected:
-
-    double m_X;
-    double m_Y;
-};
-
-#endif
diff --git a/homer_nav_libs/src/Math/Pose.cpp b/homer_nav_libs/src/Math/Pose.cpp
deleted file mode 100644
index 6011f280..00000000
--- a/homer_nav_libs/src/Math/Pose.cpp
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- *  Pose.cpp
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- *  $Id: Pose.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include <cmath>
-
-#include "Pose.h"
-#include "Transformation2D.h"
-
-using namespace std;
-
-
-#define THIS Pose
-
-THIS::THIS(float x, float y, float theta) : Point2D(x, y) {
-  m_Theta = theta;
-}
-
-THIS::THIS() {
-  m_Theta = 0.0;
-}
-
-THIS::~THIS() {
-}
-
-float THIS::theta() const {
-  return m_Theta;
-}
-
-void THIS::setTheta(float theta) {
-  m_Theta = theta;
-}
-
-Pose THIS::operator+ ( const Transformation2D& transformation ) const {
-  float x, y, theta;
-  x = m_X + transformation.x();
-  y = m_Y + transformation.y();
-  theta = m_Theta + transformation.theta();
-  while (theta >= M_PI) theta -= 2*M_PI;
-  while (theta < -M_PI) theta += 2*M_PI;
-
-	return Pose(x, y, theta);
-}
-
-Pose THIS::operator- ( const Transformation2D& transformation ) const {
-  float x, y, theta;
-  x = m_X - transformation.x();
-  y = m_Y - transformation.y();
-  theta = m_Theta - transformation.theta();
-  while (theta >= M_PI) theta -= 2*M_PI;
-  while (theta < -M_PI) theta += 2*M_PI;
-
-	return Pose(x, y, theta);
-}
-
-Transformation2D THIS::operator- ( const Pose& pose ) const {
-  float x, y, theta;
-  x = m_X - pose.x();
-  y = m_Y - pose.y();
-
-  float s1, s2;
-  if (m_Theta > pose.theta()) {
-    s1 = -( 2 * M_PI - m_Theta + pose.theta());
-    s2 = m_Theta - pose.theta();
-  } else {
-    s1 = 2 * M_PI - pose.theta() + m_Theta;
-    s2 = -(pose.theta() - m_Theta);
-  }
-  if (fabs(s1) > fabs(s2)) {
-    theta = s2;
-  } else {
-    theta = s1;
-  }
-  while (theta >= M_PI) theta -= 2*M_PI;
-  while (theta < -M_PI) theta += 2*M_PI;
-
-	return Transformation2D(x, y, theta);
-}
-
-Pose THIS::interpolate(const Pose& referencePose, float t) const {
-
-  float newX = m_X + t * (referencePose.x() - m_X);
-  float newY = m_Y + t * (referencePose.y() - m_Y);
-
-  // Calculate mean angle by adding the vem_Thetaors in unit circle
-  float x1 = cosf(m_Theta);
-  float y1 = sinf(m_Theta);
-  float x2 = cosf(referencePose.theta());
-  float y2 = sinf(referencePose.theta());
-  float newTheta = atan2 (y1*(1-t)+y2*t, x1*(1-t)+x2*t);
-
-  return Pose(newX, newY, newTheta);
-}
-
-//THIS::THIS( ExtendedInStream& extStrm )
-//{
-//  char version;
-//  extStrm >> version;
-//  extStrm >> m_X;
-//  extStrm >> m_Y;
-//  extStrm >> m_Theta;
-//}
-
-//void THIS::storer( ExtendedOutStream& extStrm ) const
-//{
-//  char version=10;
-//  extStrm << version;
-//  extStrm << m_X;
-//  extStrm << m_Y;
-//  extStrm << m_Theta;
-//}
-
diff --git a/homer_nav_libs/src/Math/Pose.h b/homer_nav_libs/src/Math/Pose.h
deleted file mode 100644
index d0f6574c..00000000
--- a/homer_nav_libs/src/Math/Pose.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- *  Pose.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Pose.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef POSE_H
-#define POSE_H
-
-#include "Point2D.h"
-//#include "Architecture/Serializer/ExtendedOutStream.h" // TODO kann wahrscheinlich weg
-//#include "Architecture/Serializer/ExtendedInStream.h"
-
-class Transformation2D;
-
-/**
- * @class Pose
- *
- * @author Stephan Wirth, Susanne Maur (RX), David Gossow (RX)
- * @brief Class to describe and hold a pose of the robot (x, y)-Position + Orientation
- *        in world-coordinates
- */
-class Pose : public Point2D {
-
-public:
-
-    /**
-     * Constructor which initializes the members with the given values.
-     * @param x x-position
-     * @param y y-position
-     * @param theta orientation in radiants
-     */
-    Pose(float x, float y, float theta);
-
-    /**
-     * Default constructor, initializes members to 0.
-     */
-    Pose();
-
-    /**
-    * The destructor is empty.
-    */
-    ~Pose();
-
-    float theta() const;
-
-    void setTheta(float theta);
-
-    Pose operator+ ( const Transformation2D& transformation ) const;
-    Pose operator- ( const Transformation2D& transformation ) const;
-    Transformation2D operator- ( const Pose& pose ) const;
-
-    /**
-     * Interpolates between two poses and returns a pose which correlates with
-     * current pose +  t * (reference pose - current pose)
-     * @param referencePose The second pose to interpolate between.
-     * @param t The factor of interpolation.
-     * @return Interpolated pose
-     */
-    Pose interpolate(const Pose& referencePose, float t) const;
-
-//    Pose( ExtendedInStream& extStrm );
-
-//    void storer( ExtendedOutStream& extStrm ) const;
-
-protected:
-
-    float m_Theta;
-};
-
-#endif
diff --git a/homer_nav_libs/src/Math/Transformation2D.cpp b/homer_nav_libs/src/Math/Transformation2D.cpp
deleted file mode 100644
index 693c7a39..00000000
--- a/homer_nav_libs/src/Math/Transformation2D.cpp
+++ /dev/null
@@ -1,308 +0,0 @@
-/*******************************************************************************
- *  Transformation2D.cpp
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Transformation2D.cpp 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#include "Transformation2D.h"
-
-#include <cmath>
-#include <vector>
-#include <iostream>
-#include <sstream>
-#include "vec2.h" // TODO das sieht nach baselib aus ggf. durch baselib ersetzen
-#include "mat2.h" // TODO das sieht nach baselib aus ggf. durch baselib ersetzen
-#include "Point2D.h"
-#include "Line2D.h"
-
-#define THIS Transformation2D
-#define BASE CVec2
-
-THIS::Transformation2D() : BASE()
-{
-  m_Theta = 0.0;
-}
-
-THIS::Transformation2D ( double x, double y, double theta ) : BASE ( x,y )
-{
-  m_Theta = theta;
-}
-
-THIS::Transformation2D ( const CVec2& vec, double theta ) : BASE ( vec )
-{
-  m_Theta = theta;
-}
-
-THIS::~Transformation2D()
-{
-}
-
-void THIS::set ( double x, double y, double theta )
-{
-  m_X = x;
-  m_Y = y;
-  m_Theta = theta;
-}
-
-double THIS::theta() const
-{
-  return m_Theta;
-}
-
-Transformation2D THIS::operator+ ( Transformation2D t ) const
-{
-  double theta = m_Theta + t.theta();
-  // TODO comment only for scan matching test
-//   while ( theta >= M_PI ) theta -= 2*M_PI;
-//   while ( theta < -M_PI ) theta += 2*M_PI;
-  return Transformation2D ( m_X + t.x(), m_Y + t.y(), theta );
-}
-
-Transformation2D& THIS::operator+= ( Transformation2D t )
-{
-  m_X += t.x();
-  m_Y += t.y();
-  m_Theta += t.theta();
-  // TODO comment only for scan matching test
-//   while ( m_Theta >= M_PI ) m_Theta -= 2*M_PI;
-//   while ( m_Theta < -M_PI ) m_Theta += 2*M_PI;
-  return ( *this );
-}
-
-Transformation2D THIS::operator- ( Transformation2D t ) const
-{
-  float s1, s2, theta;
-  if ( m_Theta > t.theta() )
-  {
-    s1 = - ( 2 * M_PI - m_Theta + t.theta() );
-    s2 = m_Theta - t.theta();
-  }
-  else
-  {
-    s1 = 2 * M_PI - t.theta() + m_Theta;
-    s2 = - ( t.theta() - m_Theta );
-  }
-  if ( fabs ( s1 ) > fabs ( s2 ) )
-  {
-    theta = s2;
-  }
-  else
-  {
-    theta = s1;
-  }
-  while ( theta >= M_PI ) theta -= 2*M_PI;
-  while ( theta < -M_PI ) theta += 2*M_PI;
-//   double theta = m_Theta - t.theta();
-//   while ( theta >= M_PI ) theta -= 2*M_PI;
-//   while ( theta < -M_PI ) theta += 2*M_PI;
-  return Transformation2D ( m_X - t.x(), m_Y - t.y(), theta );
-}
-
-Transformation2D& THIS::operator-= ( Transformation2D t )
-{
-  m_X -= t.x();
-  m_Y -= t.y();
-
-  float s1, s2, theta;
-  if ( m_Theta > t.theta() )
-  {
-    s1 = - ( 2 * M_PI - m_Theta + t.theta() );
-    s2 = m_Theta - t.theta();
-  }
-  else
-  {
-    s1 = 2 * M_PI - t.theta() + m_Theta;
-    s2 = - ( t.theta() - m_Theta );
-  }
-  if ( fabs ( s1 ) > fabs ( s2 ) )
-  {
-    theta = s2;
-  }
-  else
-  {
-    theta = s1;
-  }
-  while ( theta >= M_PI ) theta -= 2*M_PI;
-  while ( theta < -M_PI ) theta += 2*M_PI;
-  m_Theta = theta;
-
-  return ( *this );
-
-//   m_X -= t.x();
-//   m_Y -= t.y();
-//   m_Theta -= t.theta();
-//   while ( m_Theta >= M_PI ) m_Theta -= 2*M_PI;
-//   while ( m_Theta < -M_PI ) m_Theta += 2*M_PI;
-//   return ( *this );
-}
-
-Transformation2D THIS::operator* ( float factor ) const
-{
-
-  double theta = m_Theta * factor;
-  while ( theta >= M_PI ) theta -= 2*M_PI;
-  while ( theta < -M_PI ) theta += 2*M_PI;
-  return Transformation2D ( m_X * factor, m_Y * factor, theta );
-}
-
-Transformation2D& THIS::operator*= ( float factor )
-{
-  m_X *= factor;
-  m_Y *= factor;
-  m_Theta *= factor;
-  while ( m_Theta >= M_PI ) m_Theta -= 2*M_PI;
-  while ( m_Theta < -M_PI ) m_Theta += 2*M_PI;
-  return ( *this );
-}
-
-
-Transformation2D THIS::operator/ ( float factor ) const
-{
-  double theta = m_Theta / factor;
-  return Transformation2D ( m_X / factor, m_Y / factor, theta );
-}
-
-Transformation2D& THIS::operator/= ( float factor )
-{
-  m_X /= factor;
-  m_Y /= factor;
-  m_Theta /= factor;
-  return ( *this );
-}
-
-bool THIS::operator== ( Transformation2D t ) const
-{
-  if ( t.x() == m_X && t.y() == m_Y && t.theta() == m_Theta )
-  {
-    return true;
-  }
-  else
-  {
-    return false;
-  }
-}
-
-bool THIS::operator!= ( Transformation2D t ) const
-{
-  return ! ( ( *this ) ==t );
-}
-
-bool THIS::operator<= ( Transformation2D t ) const
-{
-  return ( this->magnitude() <= t.magnitude() ) && ( m_Theta <= t.theta() );
-}
-
-bool THIS::operator>= ( Transformation2D t ) const
-{
-  return ( this->magnitude() >= t.magnitude() ) && ( m_Theta >= t.theta() );
-}
-
-bool THIS::operator< ( Transformation2D t ) const
-{
-  return ( m_X < t.x() ) || ( m_Y < t.y() ) || ( ( m_Theta < t.theta() ) && ( *this <= t ) );
-}
-
-bool THIS::operator> ( Transformation2D t ) const
-{
-  return ( m_X > t.x() ) || ( m_Y > t.y() ) || ( ( m_Theta > t.theta() ) && ( *this >= t ) );
-}
-
-Transformation2D THIS::abs() const
-{
-  return Transformation2D ( std::abs ( m_X ), std::abs ( m_Y ), std::abs ( m_Theta ) );
-}
-
-Transformation2D THIS::inverse() const
-{
-  return ( *this ) * ( -1.0 );
-}
-
-Point2D THIS::transform ( const Point2D& point ) const
-{
-  CMat2 rotMat = CMat2 ( m_Theta );
-  CVec2 transVec = CVec2 ( m_X, m_Y );
-  Point2D transformedPoint = rotMat * ( point );
-  transformedPoint += transVec;
-  return transformedPoint;
-}
-
-std::vector<Point2D> THIS::transform ( const std::vector<Point2D>& points ) const
-{
-  CMat2 rotMat = CMat2 ( m_Theta );
-  CVec2 transVec = CVec2 ( m_X, m_Y );
-  std::vector<Point2D> transformedPoints;
-  std::vector<Point2D>::const_iterator iter = points.begin();
-  while ( iter != points.end() )
-  {
-    Point2D currPoint = rotMat * ( *iter );
-    currPoint += transVec;
-    transformedPoints.push_back ( currPoint );
-    iter++;
-  }
-  return transformedPoints;
-}
-
-// // Reihenfolge rotation/translation vertauscht !!!
-// Point2D THIS::transform ( Point2D point ) const
-// {
-//   CMat2 rotMat = CMat2 ( m_Theta );
-//   CVec2 transVec = CVec2 ( m_X, m_Y );
-//   Point2D transformedPoint = point+transVec;
-//   transformedPoint = rotMat * point;
-//   return transformedPoint;
-// }
-//
-// // Reihenfolge rotation/translation vertauscht !!!
-// std::vector<Point2D> THIS::transform ( std::vector<Point2D> points ) const
-// {
-//   CMat2 rotMat = CMat2 ( m_Theta );
-//   CVec2 transVec = CVec2 ( m_X, m_Y );
-//   std::vector<Point2D> transformedPoints;
-//   std::vector<Point2D>::const_iterator iter = points.begin();
-//   while ( iter != points.end() )
-//   {
-//     Point2D currPoint = ( *iter )+ transVec;
-//     currPoint = rotMat * currPoint;
-//     transformedPoints.push_back ( currPoint );
-//     iter++;
-//   }
-//   return transformedPoints;
-// }
-
-Line2D THIS::transform ( const Line2D& line ) const
-{
-  CMat2 rotMat = CMat2 ( m_Theta );
-  CVec2 transVec = CVec2 ( m_X, m_Y );
-  Line2D transformedLine = Line2D ( rotMat * line.start() + transVec, rotMat * line.end() + transVec );
-  return transformedLine;
-}
-
-std::vector<Line2D> THIS::transform ( const std::vector<Line2D>& lines ) const
-{
-  //CMat2 rotMat = CMat2 ( m_Theta );
-  //CVec2 transVec = CVec2 ( m_X, m_Y );
-  std::vector<Line2D> transformedLines;
-  std::vector<Line2D>::const_iterator iter = lines.begin();
-  while ( iter != lines.end() )
-  {
-    transformedLines.push_back ( transform(*iter) );
-    iter++;
-  }
-  return transformedLines;
-}
-
-std::string THIS::toString() const
-{
-  std::ostringstream str;
-  str << "deltaX: " << m_X << ", deltaY: " << m_Y << ", deltaTheta: " << m_Theta;
-  return str.str();
-}
-
-
-
-#undef THIS
-#undef BASE
-
diff --git a/homer_nav_libs/src/Math/Transformation2D.h b/homer_nav_libs/src/Math/Transformation2D.h
deleted file mode 100644
index 59a54d82..00000000
--- a/homer_nav_libs/src/Math/Transformation2D.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*******************************************************************************
- *  Transformation2D.h
- *
- *  (C) 2008 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * $Id: Transformation2D.h 44313 2011-04-06 22:46:28Z agas $
- *******************************************************************************/
-
-#ifndef TRANSFORMATION2D_H
-#define TRANSFORMATION2D_H
-
-#include <cmath>
-#include <vector>
-//#include "Workers/Math/Vec.h"
-#include "Point2D.h"
-#include "Line2D.h"
-
-
-/**
- * @class Transformation2D
- *
- * @author Susanne Maur
- *
- * @brief Class to describe a transformation of poses in 2D.
- * This inplies a translation in x and y direction each and a rotation.
- */
-class Transformation2D : public CVec2
-{
-
-  public:
-
-    /**
-     * Constructor that initializes the members.
-     * @param x translation in x direction in m
-     * @param y translation in y direction in m
-     * @param theta rotation in radiants
-     */
-    Transformation2D ( double x, double y, double theta );
-
-    /**
-     * Constructor that initializes the members.
-     * @param vec a vector which represents the translation in x and y direction
-     * @param theta rotation in radiants
-     */
-    Transformation2D ( const CVec2& vec, double theta );
-
-    /**
-     * Default constructor sets all members to 0.0.
-     */
-    Transformation2D();
-
-    /**
-     * Default destructor.
-     */
-    ~Transformation2D();
-
-    /**
-     * Sets the values of transformation.
-     * @param x translation in x direction in mm
-     * @param y translation in y direction in mm
-     * @param theta rotation in radiants
-     */
-    void set ( double x, double y, double theta );
-
-    /**
-     * Returns the rotation in radiants.
-     * @return rotation in radiants
-     */
-    double theta() const;
-
-    /**
-     * Adds two transformations.
-     */
-    Transformation2D operator+ ( Transformation2D t ) const;
-    Transformation2D& operator+= ( Transformation2D t );
-
-    /**
-     * Subtracts two transformations.
-     */
-    Transformation2D operator- ( Transformation2D t ) const;
-    Transformation2D& operator-= ( Transformation2D t );
-
-    /**
-     * Scales a transformation by a factor
-     */
-    Transformation2D operator* ( float factor ) const;
-    Transformation2D& operator*= ( float factor );
-
-    /**
-     * Scales a transformation by a factor
-     */
-    Transformation2D operator/ ( float factor ) const;
-    Transformation2D& operator/= ( float factor );
-
-    /**
-     * Test equality of transformations.
-     */
-    bool operator== ( Transformation2D t ) const;
-    bool operator!= ( Transformation2D t ) const;
-
-    /**
-     * Compare transformations.
-     * (attention: algebraic signs are taken into account, if necessary use fabs())
-     */
-    bool operator<= ( Transformation2D t ) const;
-    bool operator>= ( Transformation2D t ) const;
-    bool operator< ( Transformation2D t ) const;
-    bool operator> ( Transformation2D t ) const;
-
-    /**
-     * Applies abs() on every attribute.
-     */
-    Transformation2D abs() const;
-
-    /**
-     * Inverts the transformation, scales every attribute with -1.
-     */
-    Transformation2D inverse() const;
-
-    /**
-     * Transformes points by first rotation, then translating.
-     */
-    Point2D transform ( const Point2D& point ) const;
-    std::vector<Point2D> transform ( const std::vector<Point2D>& points ) const;
-
-    /**
-     * Transformes lines by first rotation, then translating.
-     */
-    Line2D transform ( const Line2D& line ) const;
-    std::vector<Line2D> transform ( const std::vector<Line2D>& lines ) const;
-
-    /**
-     * Returns the string representation of the transformation.
-     * @return string representation of the transformation.
-     */
-    std::string toString() const;
-
-  private:
-    double m_Theta;
-};
-
-#endif
-
diff --git a/homer_nav_libs/src/Math/mat2.h b/homer_nav_libs/src/Math/mat2.h
deleted file mode 100644
index 254e8dc6..00000000
--- a/homer_nav_libs/src/Math/mat2.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- *  mat2.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#ifndef MAT2_H
-#define MAT2_H
-
-#include <math.h>
-#include "Point2D.h"
-#include "vec2.h"
-
-class CMat2
-{
-	public:
-		CMat2();
-		CMat2(float rot);
-		~CMat2();
-
-		CMat2 operator *(const CMat2 &mat) const;
-
-		CVec2 operator *(const CVec2& v) const;
-
-		Point2D operator *(const Point2D& p) const;
-        
-        float& operator [] (unsigned int position) {
-            return fMatrix[position];
-        }
-        
-        CMat2 operator +(const CMat2 rhs) const {
-            CMat2 newMatrix;
-            for (unsigned int i = 0; i < 4; i++) {
-                newMatrix[i] = valueAt(i) + rhs.valueAt(i);
-            }
-            return newMatrix;
-        }
-        
-        CMat2 operator -(const CMat2 rhs) const {
-            CMat2 newMatrix;
-            for (unsigned int i = 0; i < 4; i++) {
-                newMatrix[i] = valueAt(i) - rhs.valueAt(i);
-            }
-            return newMatrix;
-        }
-        
-        float valueAt(unsigned int position) const{
-            return fMatrix[position];
-        }
-        
-		union
-		{
-			float fMatrix[4];
-			float m[2][2];
-			struct
-			{
-				float xx, xy;
-				float yx, yy;
-			};
-		};
-
-		void transpose();
-		void loadIdentity();
-
-		void makeRotation(float fA);
-
-		bool invert();
-};
-
-
-
-#include "mat2_inl.h"
-
-#endif
diff --git a/homer_nav_libs/src/Math/mat2_inl.h b/homer_nav_libs/src/Math/mat2_inl.h
deleted file mode 100644
index e3f77e16..00000000
--- a/homer_nav_libs/src/Math/mat2_inl.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/*******************************************************************************
- *  mat2_inl.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus
- *******************************************************************************/
-
-#include <assert.h>
-
-inline CMat2::CMat2(){
-    for (unsigned int i = 0; i < 4; i++) {
-        fMatrix[i] = 0;
-    }
-}
-
-inline CMat2::~CMat2()
-{}
-
-inline CMat2::CMat2(float rot)
-{
-	makeRotation(rot);
-}
-
-inline CMat2 CMat2::operator * ( const CMat2 & mat ) const
-{
-    CMat2 retValue;
-    for (unsigned int line = 0; line < 2; line++) {
-        for (unsigned int column = 0; column < 2; column++) {
-            retValue[line*2 + column] = valueAt(line*2 + column) + mat.valueAt(column*2 + line);
-        }
-    }
-    return retValue;
-}
-
-inline CVec2 CMat2::operator * ( const CVec2& v ) const
-{
-	return CVec2(xx*v[0] + xy*v[1],yx*v[0] + yy*v[1]);
-}
-
-inline Point2D CMat2::operator * ( const Point2D& p ) const
-{
-	return Point2D(xx*p.x() + xy*p.y(), yx*p.x() + yy*p.y());
-}
-
-inline void CMat2::transpose()
-{
-	float t=xy;
-	xy=yx;
-	yx=t;
-}
-
-inline void CMat2::loadIdentity()
-{
-	xx=1.0f; xy=0.0f;
-	yx=0.0f; yy=1.0f;
-}
-
-inline void CMat2::makeRotation ( float fA )
-{
-	xx=yy=cosf(fA);
-	yx=sinf(fA);
-	xy=-yx;
-}
-
-inline bool CMat2::invert()
-{
-	CMat2 tmp;
-	float det = fMatrix[0]*fMatrix[3] - fMatrix[1]*fMatrix[2];
-
-	if(fabs(det) < 0.001f)	return false;
-
-	det = 1.0 / det;
-	tmp.fMatrix[0] = fMatrix[3]*det;
-	tmp.fMatrix[1] = -fMatrix[1]*det;
-	tmp.fMatrix[2] = -fMatrix[2]*det;
-	tmp.fMatrix[3] = fMatrix[0]*det;
-
-	(*this)=tmp;
-	return true;
-}
-
-
-
-
diff --git a/homer_nav_libs/src/Math/vec2.h b/homer_nav_libs/src/Math/vec2.h
deleted file mode 100644
index 39a72c8e..00000000
--- a/homer_nav_libs/src/Math/vec2.h
+++ /dev/null
@@ -1,189 +0,0 @@
-/*******************************************************************************
- *  vec2.h
- *
- *  (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de>
- *           Universitaet Koblenz-Landau
- *
- * Author: Frank Neuhaus, Susanne Maur
- *******************************************************************************/
-
-#include <iostream>
-#include <sstream>
-
-#ifndef VEC2_H
-#define VEC2_H
-
-#include <math.h>
-
-class CVec2
-{
-  public:
-
-    inline CVec2()
-    {
-      m_X = 0; m_Y = 0;
-    }
-
-    inline CVec2 ( double x, double y )
-    {
-      m_X=x; m_Y=y;
-    }
-
-    inline CVec2 ( const CVec2& vec )
-    {
-      m_X=vec.x(); m_Y=vec.y();
-    }
-
-    inline CVec2 operator+ ( const CVec2& vVector ) const
-    {
-      return CVec2 ( vVector[0] + m_X, vVector[1] + m_Y );
-    };
-
-    inline CVec2 operator- ( const CVec2& vVector ) const
-    {
-      return CVec2 ( m_X - vVector[0], m_Y - vVector[1] );
-    };
-    
-    inline CVec2 operator- ( ) const
-    {
-        return CVec2 ( - m_X, - m_Y );
-    };
-
-    inline CVec2 operator* ( double num ) const
-    {
-      return CVec2 ( m_X * num, m_Y * num );
-    };
-
-    inline double operator* ( const CVec2& vVector ) const
-    {
-      return m_X*vVector[0]+m_Y*vVector[1];
-    }
-
-    inline CVec2 operator/ ( double num ) const
-    {
-      return CVec2 ( m_X / num, m_Y / num );
-    }
-
-    inline void set ( double fx, double fy )
-    {
-      m_X=fx; m_Y=fy;
-    }
-
-    inline double x() const
-    {
-      return m_X;
-    }
-
-    inline double y() const
-    {
-      return m_Y;
-    }
-
-    inline double magnitude() const
-    {
-      double sumOfSquares = m_X*m_X + m_Y*m_Y;
-      return sqrt ( sumOfSquares );
-    }
-
-    inline double operator [] ( unsigned int i ) const
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline double& operator [] ( unsigned int i )
-    {
-      return ( ( double* ) this ) [i];
-    }
-
-    inline CVec2& operator/= ( double num )
-    {
-      double inv=1.0f/num;
-      m_X*=inv;
-      m_Y*=inv;
-      return ( *this );
-    }
-
-    inline CVec2& operator*= ( double num )
-    {
-      m_X*=num;
-      m_Y*=num;
-      return ( *this );
-    }
-
-    inline CVec2& normalize()
-    {
-      return ( *this/=magnitude() );
-    }
-
-    inline CVec2& makePerp()
-    {
-      double xn=m_X;
-      m_X=-m_Y;
-      m_Y=xn;
-      return *this;
-    }
-
-    inline CVec2 getNormal() const
-    {
-      return CVec2 ( m_Y, -m_X ); //?
-    }
-
-    inline CVec2 getNormalized() const
-    {
-      return ( *this ) /magnitude();
-    }
-
-    inline double sqr() const
-    {
-      return ( *this ) * ( *this );
-    }
-
-    inline double dot ( const CVec2& vec ) const
-    {
-      return ( m_X*vec[0] ) + ( m_Y*vec[1] );
-    }
-
-    inline double getAngle ( const CVec2& vec ) const
-    {
-      return acos ( dot ( vec ) / ( magnitude() *vec.magnitude() ) );
-    }
-
-    /// @param angle Rotation angle in radiants
-    inline CVec2 rotate ( float angle ) const
-    {
-      double xRot =  m_X*cos ( angle ) - m_Y*sin ( angle );
-      double yRot =  m_X*sin ( angle ) + m_Y*cos ( angle );
-      return CVec2 ( xRot, yRot );
-    }
-
-    inline bool equal ( CVec2 vec ) const
-    {
-      return ( m_X==vec.x() && m_Y==vec.y() );
-    }
-
-    /**
-     * Returns the string representation of the vector.
-     * @return string representation of the point.
-     */
-    inline std::string toString() const
-    {
-      std::ostringstream str;
-      str << m_X << " " << m_Y;
-      return str.str();
-    }
-
-  protected:
-    double m_X, m_Y;
-};
-
-inline CVec2 operator* ( double f, const CVec2& v )
-{
-  return v*f;
-}
-
-inline CVec2 normalize ( const CVec2& v )
-{
-  return v/v.magnitude();
-}
-
-#endif
diff --git a/homer_nav_libs/src/SpeedControl/CMakeLists.txt b/homer_nav_libs/src/SpeedControl/CMakeLists.txt
deleted file mode 100644
index 154b60eb..00000000
--- a/homer_nav_libs/src/SpeedControl/CMakeLists.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-set(SpeedControl_SRC
-  SpeedControl.cpp
-)
-
-add_library(SpeedControl ${SpeedControl_SRC})
diff --git a/homer_nav_libs/src/SpeedControl/SpeedControl.cpp b/homer_nav_libs/src/SpeedControl/SpeedControl.cpp
deleted file mode 100644
index c33eff33..00000000
--- a/homer_nav_libs/src/SpeedControl/SpeedControl.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-#include <cmath>
-#include <iostream>
-
-#include <ros/ros.h>
-#include "SpeedControl.h"
-#include "tools/loadRosConfig.h"
-
-using namespace std;
-
-// Robot dimensions in m
-//       
-//       
-//  /-------------\  <-- MAX_X
-//  |      x      |
-//  |      |      |
-//  |      |      |
-//  | y-----      |
-//  |             |
-//  |    ROBOT    |
-//  |             |
-//  \-------------/  <-- MIN_X
-//  ^             ^
-//  |             |
-//  MAX_Y      MIN_Y
-//
-float ROBOT_MIN_X = -0.45;
-float ROBOT_MAX_X =  0.30;
-float ROBOT_MIN_Y = -0.27;
-float ROBOT_MAX_Y =  0.27;
-
-
-namespace {
-  Eigen::AlignedBox2f InnerDangerZone,
-        OuterDangerZone;
-  float InnerDangerZoneFactor,
-        OuterDangerZoneFactor;
-
-  inline Eigen::AlignedBox2f loadRect(const string& path)
-  {
-    pair<float, float> pX, pY;
-    loadConfigValue(path + "/x_min", pX.first);
-    loadConfigValue(path + "/x_max", pX.second);
-    loadConfigValue(path + "/y_min", pY.first);
-    loadConfigValue(path + "/y_max", pY.second);
-
-    Eigen::Vector2f first(pX.first, pY.first), second(pX.second, pY.second);
-    return Eigen::AlignedBox2f(first, second);
-  }  
-}
-
-void SpeedControl::loadDimensions()
-{
-  InnerDangerZone = loadRect("/homer_navigation/speed_control/inner_danger_zone");
-  InnerDangerZoneFactor;
-  loadConfigValue("/homer_navigation/speed_control/inner_danger_zone/speed_factor", InnerDangerZoneFactor);
-  OuterDangerZone = loadRect("/homer_navigation/speed_control/inner_danger_zone");
-  OuterDangerZoneFactor;
-  loadConfigValue("/homer_navigation/speed_control/outer_danger_zone/speed_factor", OuterDangerZoneFactor);
-  if(!OuterDangerZone.contains(InnerDangerZone))
-    ROS_WARN_STREAM("InnerDangerZone is not contained in OuterDangerZone");
-}
-
-float SpeedControl::getSpeedFactor(const vector<geometry_msgs::Point>& points, float minVal, float maxVal )
-{
-  float minFactor = 1.0;
-  for (unsigned i = 0; i < points.size(); i++)
-  {
-    Eigen::Vector2f point(points[i].x, points[i].y);
-    if(InnerDangerZone.contains(point))
-    {
-      minFactor = InnerDangerZoneFactor;
-      break;
-    }
-    if(OuterDangerZone.contains(point))
-      minFactor = OuterDangerZoneFactor;
-  }
-  minFactor = sqrt(minFactor);
-  float range = maxVal - minVal;
-  minFactor = minVal + range*minFactor;
-  return minFactor;
-}
-
-float SpeedControl::getMaxMoveDistance(vector<geometry_msgs::Point> points)
-{
-  float minDistance = 4; // distance in m to nearest obstacle in front
-  for (unsigned int i = 0; i < points.size(); i++)
-  {
-      if(points[i].y > ROBOT_MIN_Y && points[i].y < ROBOT_MAX_Y && points[i].x > ROBOT_MAX_X)
-      {
-        float distance = sqrt((points[i].x * points[i].x) + (points[i].y * points[i].y));
-        if (distance < minDistance)
-        {
-          minDistance = distance;
-        }
-      }
-  }
-  float maxMoveDist = minDistance - ROBOT_MAX_X;
-  if (maxMoveDist < 0) {
-    maxMoveDist = 0.0;
-  }
-  return maxMoveDist;
-}
-
-float SpeedControl::getMaxMoveDistance(std::vector< Eigen::Vector3d >* kinectData, float minObstacleHeight, float minObstacleFromRobotDistance, float maxObstacleFromRobotDistance)
-{
-  // Check for obstacles in Kinect image: Look for closest point
-
-  float minDistance = 4; // distance to nearest obstacle in front
-
-  for(int i=0;i<kinectData->size();++i)
-  {
-    Eigen::Vector2d p = Eigen::Vector2d(kinectData->at(i).x(), kinectData->at(i).y());
-    if(!std::isnan(p.x()))
-    {
-      // Filter point cloud
-        if(p.x() > minObstacleFromRobotDistance && p.x() < maxObstacleFromRobotDistance && kinectData->at(i).z() > minObstacleHeight)
-      {
-        // Check for collisions outside of robot
-        if(p.y() > ROBOT_MIN_Y && p.y() < ROBOT_MAX_Y && p.x() > ROBOT_MAX_X)
-        {
-          float distance = sqrt((p.x() * p.x()) + (p.y() * p.y()));
-          if (distance < minDistance)
-          {
-            minDistance = distance;
-          }
-        }
-      }
-    }
-  }
-
-  float maxMoveDist = minDistance - ROBOT_MAX_X;
-  if (maxMoveDist < 0) {
-    maxMoveDist = 0.0;
-  }
-  return maxMoveDist;
-}
-
-float SpeedControl::getTurnSpeedFactor( float speedFactor, float turnAngle, float minVal, float maxVal )
-{
-  //turn faster for larger angles
-  float angleDependentFactor = sqrt( fabs(turnAngle) / M_PI );
-  angleDependentFactor = minVal + angleDependentFactor*(maxVal-minVal);
-  return sqrt( speedFactor * angleDependentFactor );
-}
-
-float SpeedControl::getMinTurnAngle(std::vector<geometry_msgs::Point> laserData, float minAngle, float maxAngle, float minDistance, float maxDistance)
-{
-    float turn_factor = 1.0;
-    for (unsigned int i = 0; i < laserData.size(); i++)
-    {
-        if(laserData[i].y > ROBOT_MIN_Y && laserData[i].y < ROBOT_MAX_Y && laserData[i].x > ROBOT_MAX_X)
-        {
-          float distance = sqrt((laserData[i].x * laserData[i].x) + (laserData[i].y * laserData[i].y));
-          if (distance < minDistance + ROBOT_MAX_X)
-          {
-            turn_factor = 0.0;
-          }
-          else if(distance > maxDistance + ROBOT_MAX_X)
-          {
-              turn_factor = 1.0;
-          }
-          else
-          {
-              turn_factor = (distance - minDistance)/maxDistance;
-          }
-        }
-    }
-    float range = maxAngle - minAngle;
-    return minAngle + turn_factor * range;
-}
-
-SpeedControl::SpeedControl() {
-}
-
-SpeedControl::~SpeedControl() {
-}
-
diff --git a/homer_nav_libs/src/SpeedControl/SpeedControl.h b/homer_nav_libs/src/SpeedControl/SpeedControl.h
deleted file mode 100644
index 7bef0e9a..00000000
--- a/homer_nav_libs/src/SpeedControl/SpeedControl.h
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef SPEEDCONTROL_H
-#define SPEEDCONTROL_H  
-
-#include <vector>
-#include <Eigen/Geometry>
-#include <geometry_msgs/Point.h>
-
-/** 
- * @class SpeedControl
- * @author Malte Knauf, Stephan Wirth
- * @brief Class for computing a speed factor with respect to a given laser measurement.
- */
-class SpeedControl {
-    
-  public:
-
-    /**
-     * @brief Loads robot and safety zone dimensions config values
-     */
-    static void loadDimensions();
-
-    /**
-     * Calculates the speed factor for the robot. If a measured obstacle lies in the "danger zone"
-     * that is defined in SpeedControl.cpp, the speed factor will be below maxVal. The nearer the obstacle,
-     * the smaller the speed factor.
-     * @param laserData Laser measurement
-     * @param minVal,maxVal range of return values
-     * @return Speed factor, value between minVal and maxVal. The higher the speed factor, the safer is it to drive fast.
-     */
-    static float getSpeedFactor(const std::vector<geometry_msgs::Point>& points, float minVal=0.2, float maxVal=1.0);
-
-    /**
-     * Calculates the maximum distance the robot can move without touching an obstacle.
-     * @param laserPoints Current laser measurement transformed to (valid) points in map frame
-     * @param laserConf The configuration of the LRF that took the measurement
-     * @return maximum distance (m) the robot can move based on the given laserscan.
-     */
-    static float getMaxMoveDistance(std::vector<geometry_msgs::Point> laserData);
-
-    static float getMaxMoveDistance(std::vector< Eigen::Vector3d >* kinectData, float minObstacleHeight, float minObstacleFromRobotDistance, float maxObstacleFromRobotDistance);
-
-    /// @return if the angle is larger, the turn speed factor will be higher
-    static float getTurnSpeedFactor( float speedFactor, float turnAngle, float minVal, float maxVal );
-
-    /**
-     * Calculates the minimum angle between the robot's orientation and the next waypoint which is necessary
-     * to trigger a rotation instead of a straight line
-     * @brief getMinTurnAngle
-     * @param laserData
-     * @param minAngle
-     * @param maxAngle
-     * @return
-     */
-    static float getMinTurnAngle(std::vector<geometry_msgs::Point> laserData, float minAngle, float maxAngle,
-                                                                              float minDistance, float maxDistance);
-
-  private:
-
-    /** 
-     * Constructor is empty and private because this class will never be instanciated.
-     */
-    SpeedControl();
-    
-    /**
-     * Destructor is empty.
-     */
-    ~SpeedControl();
-
-};
-#endif
-
diff --git a/homer_nav_libs/src/tools/tools.h b/homer_nav_libs/src/tools/tools.h
deleted file mode 100644
index e1067450..00000000
--- a/homer_nav_libs/src/tools/tools.h
+++ /dev/null
@@ -1,258 +0,0 @@
-#ifndef TOOLS_H
-#define TOOLS_H
-
-#include <Eigen/Geometry>
-#include <geometry_msgs/Point.h>
-#include <geometry_msgs/Pose.h>
-#include <tf/transform_listener.h>
-#include <ros/ros.h>
-
-/**
- * @author Malte Knauf (2014)
- * Convenience functions that are often used in the mapping and navigation process
- */
-namespace map_tools
-{
-
-    /**
-     * @brief Converts a point p in world frame /map to the respective cell position in the map
-     * @param p Point in world frame
-     * @param origin Origin of the map
-     * @param resolution Resolution of the map
-     * @return Cell position of the point
-     */
-    Eigen::Vector2i toMapCoords(geometry_msgs::Point p, geometry_msgs::Pose origin, float resolution)
-    {
-        int x_idx = (p.x - origin.position.x)/resolution + 0.51;
-        int y_idx = (p.y - origin.position.y)/resolution + 0.51;
-        Eigen::Vector2i ret(x_idx, y_idx);
-        return ret;
-    }
-
-    /**
-     * @brief Converts the cell position of a point to its respective position in the world frame
-     * @param idx Cell position of the point
-     * @param origin Origin of the map
-     * @param resolution Resolution of the map
-     * @return Point in world frame
-     */
-    geometry_msgs::Point fromMapCoords(Eigen::Vector2i idx, geometry_msgs::Pose origin, float resolution)
-    {
-        geometry_msgs::Point ret;
-        ret.x = origin.position.x + (idx.x() - 0.5) * resolution;
-        ret.y = origin.position.y + (idx.y() - 0.5) * resolution;
-        return ret;
-    }
-
-    /**
-     * @brief Converts the QT pixel position of a point to its respective position in the world frame
-     * @param idx Cell position of the point
-     * @param origin Origin of the map
-     * @param resolution Resolution of the map
-     * @return Point in world frame
-     */
-    geometry_msgs::Point qtFromMapCoords(Eigen::Vector2i idx, geometry_msgs::Pose origin, float resolution)
-    {
-        geometry_msgs::Point ret;
-        ret.x = -(origin.position.x + idx.y()) * resolution;
-        ret.y = -(origin.position.y + idx.x()) * resolution;
-        return ret;
-    }
-
-    /**
-     * @brief map_index returns for a given point in the map real-world frame the respective index in the map
-     * @param p Point in the real-world frame (usually the frame /map or /world)
-     * @param origin Pose of the point (0,0) of the map in the real-world frame
-     * @param width Width of the map
-     * @param resolution Resolution in meters/cell of the map
-     * @return index of point in the map
-     */
-    int map_index(geometry_msgs::Point p, geometry_msgs::Pose origin, float width, float resolution)
-    {
-        return (int)(width *
-               ((p.y - origin.position.y)/resolution + 0.51) +
-               ((p.x - origin.position.x)/resolution + 0.51));
-    }
-
-    /**
-     * @brief point_in_map returns true if given point is in the map. False otherwise
-     * @param p Point in the real-world frame (usually the frame /map or /world)
-     * @param origin Pose of the point (0,0) of the map in the real-world frame
-     * @param width Width of the map
-     * @param resolution Resolution in meters/cell of the map
-     * @return true or false
-     */
-    bool point_in_map(geometry_msgs::Point p, geometry_msgs::Pose origin, float width, float resolution)
-    {
-        int x_idx = (p.x - origin.position.x)/resolution + 0.51;
-        int y_idx = (p.y - origin.position.y)/resolution + 0.51;
-        if(x_idx < 0 || y_idx < 0 || x_idx >= width || y_idx >= width) return false;
-        return true;
-    }
-
-    /**
-     * @brief transformPoint wrapper to transform points between coordinate frames
-     * @param point input point in from_frame
-     * @param listener transform listener
-     * @param from_frame input frame
-     * @param to_frame output frame
-     * @return transformed point in to_frame
-     */
-    geometry_msgs::Point transformPoint(geometry_msgs::Point point, tf::TransformListener &listener,
-                                        std::string from_frame, std::string to_frame)
-    {
-        geometry_msgs::PointStamped pin;
-        geometry_msgs::PointStamped pout;
-        pin.header.frame_id = from_frame;
-        pin.point = point;
-        try
-        {
-            listener.transformPoint(to_frame, pin, pout);
-            return pout.point;
-        }
-        catch (tf::TransformException ex){
-              ROS_ERROR("%s",ex.what());
-        }
-    }
-
-    /**
-     * @brief laser_range_to_point converts a single given laser scan range in polar coordinates
-     *          to the respective point in euclidean coordinates in the target frame
-     * @param laser_range range of the laser point to convert
-     * @param index
-     * @param start_angle
-     * @param angle_step
-     * @param listener
-     * @param from_frame
-     * @param to_frame
-     * @return
-     */
-    geometry_msgs::Point laser_range_to_point(float laser_range, int index, float start_angle,
-                                              float angle_step, tf::TransformListener &listener,
-                                              std::string from_frame, std::string to_frame)
-    {
-        float alpha = start_angle + index * angle_step;
-        geometry_msgs::PointStamped pin;
-        geometry_msgs::PointStamped pout;
-        pin.header.frame_id = from_frame;
-        pin.point.x = cos(alpha) * laser_range;
-        pin.point.y = sin(alpha) * laser_range;
-
-        try
-        {
-            listener.transformPoint(to_frame, pin, pout);
-            return pout.point;
-        }
-        catch (tf::TransformException ex){
-              //ROS_ERROR("%s",ex.what());
-        }
-    }
-
-    /**
-     * @brief laser_ranges_to_points converts a given laser scan in polar coordinates
-     *          to the respective points in euclidean coordinates in the target frame
-     * @param laser_data laser data ranges
-     * @param start_angle angle of the first measurement
-     * @param angle_step angle increment between two consecutive laser measurements
-     * @param range_min minimum valid range
-     * @param range_max maximum valid range
-     * @return vector containing the laser measurements in euclidean points
-     */
-    std::vector<geometry_msgs::Point> laser_ranges_to_points(const std::vector<float>& laser_data, float start_angle,
-                                                        float angle_step, float range_min, float range_max,
-                                                        tf::TransformListener &listener,
-                                                        std::string from_frame, std::string to_frame)
-    {
-        std::vector<geometry_msgs::Point> ret;
-        float alpha = start_angle;
-        for (int i = 0; i < laser_data.size(); i++) {
-          if(laser_data[i] < range_min || laser_data[i] > range_max)
-          {
-              alpha += angle_step;
-              continue;
-          }
-          geometry_msgs::Point point;
-          point.x = cos(alpha) * laser_data.at(i);
-          point.y = sin(alpha) * laser_data.at(i);
-
-          geometry_msgs::PointStamped pin;
-          pin.header.frame_id = from_frame;
-          pin.point = point;
-          geometry_msgs::PointStamped pout;
-          try
-          {
-              listener.transformPoint(to_frame, pin, pout);
-              ret.push_back(pout.point);
-          }
-          catch (tf::TransformException ex){
-                //ROS_ERROR("%s",ex.what());
-          }
-
-          alpha += angle_step;
-        }
-        return ret;
-    }
-
-    /**
-     * @brief Calculates the euclidean distance (in cells) between to points in the map
-     * @param a Point a
-     * @param b point b
-     * @return euclidean distance in cells
-     */
-    double distance(const Eigen::Vector2i& a, const Eigen::Vector2i& b)
-    {
-        return sqrt((a.x() - b.x()) * (a.x() - b.x()) + (a.y() - b.y()) * (a.y() - b.y()));
-    }
-
-    /**
-     * @brief Calculates the euclidean distance (in m) between to points in the world
-     * @param a Point a
-     * @param b point b
-     * @return euclidean distance in m
-     */
-    double distance(const geometry_msgs::Point& a, const geometry_msgs::Point& b)
-    {
-        return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
-    }
-
-/**
- * @brief findValue
- * @param map Pointer to the map to search
- * @param width Width of the map
- * @param height Height of the map
- * @param center_x \__ Center point of circle to search within
- * @param center_y /
- * @param value Value to search for in given map
- * @param radius Radius of the circle
- * @return true if the given value could be found within the given radius around (x,y)
- */
-    bool findValue(const std::vector<int8_t>* map, int width, int height, int center_x, int center_y, unsigned char value, float radius)
-    {
-
-      int start_x = int ( center_x - radius );
-      int start_y = int ( center_y - radius );
-      int end_x = int ( center_x + radius );
-      int end_y = int ( center_y + radius );
-
-      if ( start_x < 0 ) { start_x = 0; }
-      if ( start_y < 0 ) { start_y = 0; }
-      if ( end_x >= int ( width ) ) { end_x = width - 1; }
-      if ( end_y >= int ( height ) ) { end_y = height - 1; }
-
-      float sqr_radius = radius*radius;
-
-      for ( int y = start_y; y <= end_y; y++ )
-        for ( int x = start_x; x <= end_x; x++ )
-        {
-          if ( map->at(x+width*y) > value )
-          {
-            float sqr_dist = float ( x - center_x ) * float ( x - center_x ) + float ( y - center_y ) * float ( y - center_y );
-            if ( sqr_dist <= sqr_radius ) { return true; }
-          }
-        }
-
-      return false;
-    }
-}
-
-#endif // TOOLS_H
diff --git a/homer_navigation/CHANGELOG.rst b/homer_navigation/CHANGELOG.rst
deleted file mode 100644
index de451ae6..00000000
--- a/homer_navigation/CHANGELOG.rst
+++ /dev/null
@@ -1,8 +0,0 @@
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Changelog for package homer_navigation
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-1.0.1 (2015-09-08)
-------------------
-* init
-* Contributors: Raphael Memmesheimer
diff --git a/homer_navigation/CMakeLists.txt b/homer_navigation/CMakeLists.txt
deleted file mode 100644
index 880cd8a3..00000000
--- a/homer_navigation/CMakeLists.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-cmake_minimum_required(VERSION 2.8.3)
-project(homer_navigation)
-
-find_package(catkin REQUIRED COMPONENTS
-  roscpp roslib nav_msgs sensor_msgs homer_mapnav_msgs homer_nav_libs tf cmake_modules
-)
-
-find_package(Eigen REQUIRED)
-
-set(CMAKE_BUILD_TYPE Release)
-
-catkin_package(
-  INCLUDE_DIRS include
-)
-
-include_directories(
-  include
-  ${catkin_INCLUDE_DIRS}
-  ${Eigen_INCLUDE_DIRS}
-  $ENV{HOMER_DIR}
-)
-
-add_executable(homer_navigation src/homer_navigation_node.cpp)
-add_dependencies(homer_navigation ${catkin_EXPORTED_TARGETS})
-
-target_link_libraries(homer_navigation
-   ${catkin_LIBRARIES}
-   ${Eigen_LIBRARIES}
- )
diff --git a/homer_navigation/README.md b/homer_navigation/README.md
deleted file mode 100644
index ae2cb85d..00000000
--- a/homer_navigation/README.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# homer_navigation
-
-
-## Known Issues / Todo's 
-
-Die Pfadplanung dauert im Gegensatz zur alten Robbie-Implementierung zu lange. Je mehr freie Fläche vorhanden ist, desto länger dauert die Berechnung eines Pfades.
-
-## Introduction 
-
-Das Package "homer_navigation" mit seiner gleichnamigen Node ist für die Navigation des Roboters zuständig. Es hält stets die aktuelle Karte des Roboters vor, die z.B. vom map_manager veschickt wurde und berechnet anhand von dieser Karte einen Pfad vom Roboter zu einem gegebenen Zielpunkt. Dafür verwendet die Navigation die sogenannte Pfad-Transformation - eine Kombination aus Distanz-Transformation und Hindernistransformation -, in Verbindung mit A-Stern, um einen optimalen Pfad zu finden. Das Verhältnis zwischen Distanz- und Hindernis-Transformation kann über einen Parameter angepasst werden.
-Nach der Pfadberechnung ist das Package außerdem dafür zuständig den Roboter diesen Pfad zum Ziel abfahren zu lassen.
-
-## Topics 
-
-
-
-#### Publisher 
-* `/robot_platform/MoveRobot (robot_platform/MoveRobot)`: Über dieses Topic wird der aktuelle Fahrbefehl an die Roboterplattform geschickt.
-* `/robot_platform/TurnRobot (robot_platform/TurnRobot)`: Über dieses Topic wird der aktuelle Drehbefehl an die Roboterplattform geschickt.
-* `/robot_platform/StopRobot (robot_platform/StopRobot)`: Über dieses Topic wird der Roboter am Ziel beziehungsweise vor einem Hindernis gestoppt.
-* `/homer_navigation/target_reached (std_msgs/Empty)`: Wenn der Roboter sein Ziel erreicht hat, wird eine Message über dieses Topic veschickt.
-* `/homer_navigation/target_unreachable (map_messages/TargetUnreachable)`: Über dieses Topic wird mitgeteilt, wenn der Roboter sein Ziel nicht erreichen kann und die Navigation abgebrochen wurde. Ein Statuscode wird mitgeliefert (siehe Package map_messages).
-* `/homer_navigation/path (nav_msgs/Path)`: Hierüber wird der aktuelle Pfad zur Visualisierung an die GUI geschickt.
-
-#### Subscriber
-* `/map (nav_msgs/OccupancyGrid)`: Die jeweils aktuelle Map wird empfangen, um sie für die Pfadplanung und Hindernisvermeidung während der Navigation zu verwenden.
-* `/pose (geometry_msgs/PoseStamped)`: Die aktuelle Pose des Roboters wird als Startpunkt der Pfadplanung verwendet.
-* `/scan (nav_msgs/LaserScan)`: Der aktuelle LaserScan wird zur Hindernisvermeidung verwendet.
-* `/robot_platform/task_finished (std_msgs/Empty)`: Wird vom Roboter nach erfolgter AUsführung einer Bewegung verschickt. Die Navigation verwendet dies am Ende der Navigation, um nach der letzten Drehung auf dem Zielpunkt die TargetReached-Nachricht zu versenden.
-* `/homer_navigation/start_navigation (map_messages/StartNavigation)`: Startet die Pfadplanung und anschließend die Navigation zur mitgelieferten Zielpose
-* `/homer_navigation/stop_navigation (map_messages/StopNavigation)`: Stoppt die aktuelle Navigation.
-* `/homer_navigation/navigate_to_POI (map_messages/NavigateToPOI)`: Startet die Pfadplanung und anschließend die Navigation zum POI mit angegebenen Namen. Der entsprechende POI wird anschließend vom map_manager erfragt.
-* `/homer_navigation/unknown_threshold (std_msgs/Int8)`: Über dieses Topic kann der Schwellwert verändert werden, ab dem ein Zellwahrscheinlichkeit als belegt und damit unbefahrbar markiert wird. Standard ist 50 (%).
-
-## Launch Files 
-
-* `homer_navigation.launch:` Startet die Navigation und lädt alle Navigations-Paramter in den Parameterserver.
-
-
-## Parameter 
-
-
-### homer_navigation
-
-
-
-
-* `/homer_navigation/safe_path_weight:` Gewicht, um Bevorzugung sicherer (d.h. größerer Abstand zu Hindernissen) Pfade im Gegensatz zu kürzeren Pfaden einzustellen. 0 bedeutet kürzester Pfad, aber keine Sicherheit. Je höher, desto sicherer.
-* `/homer_navigation/allowed_obstacle_distance/min:` Mindestdistanz zum nächsten Hindernis, die der Roboter bei der Navigation besitzen muss.
-* `/homer_navigation/allowed_obstacle_distance/max:` Maximaldistanz zum nächsten Hindernis, die der Roboter bei der Navigation besitzen muss (wichtig für die Lokalisierung, abhängig von der Reichweite der Abstandssensoren).
-* `/homer_navigation/safe_obstacle_distance/min:` Mindestdistanz des Roboters zum nächsten Hindernis für eine sichere Navigation. Gewichtung wird mit safe_path_weight eingestellt.
-* `/homer_navigation/safe_obstacle_distance/max:` Maximaldistanz des Roboters zum nächsten Hindernis.
-* `/homer_navigation/frontier_safeness_factor:` Faktor der minimal erlaubten Distanz zum nächsten Hindernis, den eine Grenzzelle zu unbekanntem Gebiet mindestens haben muss, um als sicher und damit befahrbar zu gelten.
-* `/homer_navigation/collision_distance:` Wenn die Distanz zum nächsten Hindernis in Metern (gemessen ab der Front des Roboters) kleiner wird als der angegebene Parameter, wird der aktuelle Fahrbefehl gestoppt und die Pfadplanung neugestartet.
-* `/homer_navigation/collision_distance_near_target:` Nähe in Metern zum Ziel, ab der der Roboter bei einer Kollision nicht mehr zurückfährt und neuplant, sondern stoppt und eine TargetReached-Nachricht versendet.
-* `/homer_navigation/backward_distance:` Strecke in Metern, die der Roboter bei einer bevorstehenden Kollision zurückfährt, bevor er einen neuen Pfad plant.
-* `/homer_navigation/check_path:` Wenn auf "true" gesetzt, wird der aktuell geplante Pfad auf neu hinzukommende Hindernisse geprüft und gegebenenfalls neugeplant.
-* `/homer_navigation/check_path_max_errors:` Wenn Pfade gecheckt werden, wird umgeplant, sobald sich "check_path_max_errors"-mal hintereinander ein Hindernis in der ankommenden Karte im Pfad befindet.
-* `/homer_navigation/check_path_max_distance:` Der Pfad wird nur in der Nähe des Roboters bis zur im Parameter angegebenen Distanz auf neu hinzukommende Hindernisse überprüft
-* `/homer_navigation/turn_threshold_angle:` Wenn der Winkel zwischen der Orientierung des Roboters und der Strecke zum nächsten Wegpunkt unter dem angegebenen Wert liegt, soll geradeaus gefahren werden, ansonsten soll sich der Roboter um diesen Winkel in Richtung des Wegpunkts drehen.
-* `/homer_navigation/waypoint_sampling_threshold:` Parameter, um Anzahl der Wegpunkte im Pfad zu minimieren. 0 bedeutet keine Reduzierung. Je höher der Wert, desto mehr Wegpunkte werden gelöscht.
-* `/homer_navigation/speed_control/last_speedfactor_count:` Größe des Vektors, der die zuletzt berechneten Geschwindigkeitsfaktoren berechnet. Wird benutzt, um aus dem Mittelwert zusammen mit der aktuellen Distanz zum nächsten Hindernis die aktuelle Geschwindigkeit zu berechnen.
-* `/homer_navigation/speed_control/min_move_speedfactor:` Minimaler Faktor der maximal möglichen Geschwindigkeit, mit der der Roboter jemals fahren darf.
-* `/homer_navigation/speed_control/min_turn_speedfactor_moving:` Minimaler Faktor der maximal möglichen Drehgeschwindigkeit, mit der der Roboter sich während einer Geradeausfahrt drehen darf (aktuell mit dem cu2wd nicht möglich).
-* `/homer_navigation/speed_control/min_turn_speedfactor_standing:` Minimaler Faktor der maximal möglichen Drehgeschwindigkeit, mit der sich der Roboter im Stand drehen darf.
-* `/homer_navigation/speed_control/inner_danger_zone/x_min:` Wenn sich in der mit den nächsten vier Parametern beschriebenen Boundingbox um den Roboter ein Hindernis befindet, darf sich der Roboter nur mit der vorher eingestellten nachfolgend eingestellten Geschwindigkeit bewegen.
-* `/homer_navigation/speed_control/inner_danger_zone/x_max:`
-* `/homer_navigation/speed_control/inner_danger_zone/y_min:`
-* `/homer_navigation/speed_control/inner_danger_zone/y_max:`
-* `/homer_navigation/speed_control/inner_danger_zone/speed_factor:` Faktor der maximalen Geschwindigkeit, mit der sich der Roboter in seiner inneren Gefahrenzone bewegen darf.
-* `/homer_navigation/speed_control/outer_danger_zone/x_min:` Eine zweite Boundingbox, die die innere umschließen muss.
-* `/homer_navigation/speed_control/outer_danger_zone/x_max:`
-* `/homer_navigation/speed_control/outer_danger_zone/y_min:` 
-* `/homer_navigation/speed_control/outer_danger_zone/y_max:` 
-* `/homer_navigation/speed_control/outer_danger_zone/speed_factor:` Faktor der maximalen Geschwindigkeit, mit der sich der Roboter in seiner äußeren Gefahrenzone bewegen darf.
-* `/homer_navigation/max_rot_vel:` Maximal mögliche Rotationsgeschwindigkeit des Roboters in Radiants/Sekunde.
-* `/homer_navigation/max_trans_vel:` Maximal mögliche Geschwindigkeit des Roboters in Metern/Sekunde.
-
-
diff --git a/homer_navigation/config/homer_navigation.yaml b/homer_navigation/config/homer_navigation.yaml
deleted file mode 100644
index a9e7aff8..00000000
--- a/homer_navigation/config/homer_navigation.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-/homer_navigation/safe_path_weight: 1.5 #weight for safer path in relation to shortest path
-/homer_navigation/allowed_obstacle_distance/min: 0.32 #m robot must move within these bounds
-/homer_navigation/allowed_obstacle_distance/max: 5.0 #m
-/homer_navigation/safe_obstacle_distance/min: 0.7 #m if possible robot should move within these bounds
-/homer_navigation/safe_obstacle_distance/max: 5.0 #m
-
-/homer_navigation/frontier_safeness_factor: 1.5 #factor of distance to an obstacle of a frontier cell which is considered safe
-
-/homer_navigation/collision_distance: 0.20 #m
-
-/homer_navigation/collision_distance_near_target: 0.4 #m distance to target where obstacle avoidance won't be executed, to avoid strange for- and backward moving activities near a target
-/homer_navigation/backward_distance: 0.07 #m
-
-/homer_navigation/check_path: true
-/homer_navigation/check_path_max_errors: 2
-/homer_navigation/check_path_max_distance: 2.0 #m
-
-/homer_navigation/turn_threshold_angle: 15 #°
-
-/homer_navigation/waypoint_sampling_threshold: 2
-
-/homer_navigation/speed_control/last_speedfactor_count: 10
-/homer_navigation/speed_control/min_move_speedfactor: 1.0
-/homer_navigation/speed_control/min_turn_speedfactor_moving: 1.0
-/homer_navigation/speed_control/min_turn_speedfactor_standing: 0.5
-
-/homer_navigation/speed_control/inner_danger_zone/x_min: -0.35
-/homer_navigation/speed_control/inner_danger_zone/x_max: 1.1
-/homer_navigation/speed_control/inner_danger_zone/y_min: -0.35
-/homer_navigation/speed_control/inner_danger_zone/y_max: 0.35
-
-/homer_navigation/speed_control/inner_danger_zone/speed_factor: 0.3
-
-/homer_navigation/speed_control/outer_danger_zone/x_min: -0.45
-/homer_navigation/speed_control/outer_danger_zone/x_max: 1.6
-/homer_navigation/speed_control/outer_danger_zone/y_min: -0.45
-/homer_navigation/speed_control/outer_danger_zone/y_max: 0.45
-
-/homer_navigation/speed_control/outer_danger_zone/speed_factor: 0.6
-
-/homer_navigation/max_rot_vel: 0.4 # rad/s
-/homer_navigation/max_trans_vel: 0.3 # m/s
-
-/homer_navigation/use_cmd_vel: true # test
-/homer_navigation/min_turn_angle: 0.15 # 0.17
-/homer_navigation/max_turn_speed: 0.6 # rad/s 0.6
-/homer_navigation/max_move_speed: 0.4 # m/s 0.4
-/homer_navigation/max_drive_angle: 0.6 # if above that value only turn
diff --git a/homer_navigation/config/homer_navigation_followme.yaml b/homer_navigation/config/homer_navigation_followme.yaml
deleted file mode 100644
index 7b13dfc3..00000000
--- a/homer_navigation/config/homer_navigation_followme.yaml
+++ /dev/null
@@ -1,14 +0,0 @@
-#/homer_navigation/collision_distance: 0.23 #m
-/homer_navigation/collision_distance: 0.47 #m
-
-/homer_navigation/collision_distance_near_target: 0.2 #m distance to target where obstacle avoidance won't be executed, to avoid strange for- and backward moving activities near a target
-/homer_navigation/backward_distance: 0.07 #m
-/homer_navigation/check_path_max_errors: 5
-
-/homer_navigation/min_turn_angle/min: 20 #°
-/homer_navigation/min_turn_angle/max: 20
-/homer_navigation/min_turn_angle/min_distance: 0.5 #m 
-/homer_navigation/min_turn_angle/max_distance: 2.0 #m
-
-/homer_navigation/waypoint_sampling_threshold: 4
-
diff --git a/homer_navigation/include/homer_navigation/homer_navigation_node.h b/homer_navigation/include/homer_navigation/homer_navigation_node.h
deleted file mode 100644
index d0d95b1b..00000000
--- a/homer_navigation/include/homer_navigation/homer_navigation_node.h
+++ /dev/null
@@ -1,372 +0,0 @@
-#ifndef FastNavigationModule_H
-#define FastNavigationModule_H
-
-#include <vector>
-#include <string>
-#include <map>
-#include <deque>
-
-#include <Eigen/Geometry>
-
-#include <ros/ros.h>
-#include <tf/transform_listener.h>
-
-#include "Architecture/StateMachine/StateMachine.h"
-
-#include <nav_msgs/OccupancyGrid.h>
-#include <geometry_msgs/PoseStamped.h>
-#include <sensor_msgs/LaserScan.h>
-#include <sensor_msgs/PointCloud2.h>
-#include <homer_mapnav_msgs/StartNavigation.h>
-#include <homer_mapnav_msgs/StopNavigation.h>
-#include <homer_mapnav_msgs/NavigateToPOI.h>
-#include <std_msgs/Int8.h>
-
-class Explorer;
-/**
- * @class  HomerNavigationNode
- * @author Malte Knauf, Stephan Wirth, David Gossow (RX)
- * @brief  Performs autonomous exploration and navigation
- */
-class HomerNavigationNode {
-
-  public:
-
-    /**
-     * @brief   States of the state machines
-     */
-    enum MapType
-    {
-      SLAM_MAP,
-      NAVIGATION_MAP
-    };
-
-    enum ProcessState
-    {
-      IDLE,
-      AWAITING_EXPLORATION_MAP,
-      AWAITING_PATHPLANNING_MAP,
-      FOLLOWING_PATH,
-      AVOIDING_COLLISION,
-      FINAL_TURN,
-      TARGET_REACHED,
-      TILTED,
-      STALLED
-    };
-
-     /**
-     * The constructor
-     */
-    HomerNavigationNode();
-
-     /**
-     * The destructor
-     */
-    virtual ~HomerNavigationNode();
-    
-    /** @brief Is called in constant intervals. */
-    void idleProcess();
-
-
-  protected:
-
-    /** @brief Handles incoming messages. */
-    //virtual std::set<Message*> processMessages();
-    void mapCallback(const nav_msgs::OccupancyGrid::ConstPtr& msg);
-    void poseCallback(const geometry_msgs::PoseStamped::ConstPtr& msg);
-    void laserDataCallback(const sensor_msgs::LaserScan::ConstPtr& msg);
-    void backLaserCallback(const sensor_msgs::LaserScan::ConstPtr& msg);
-    void startNavigationCallback(const homer_mapnav_msgs::StartNavigation::ConstPtr& msg);
-    void stopNavigationCallback(const homer_mapnav_msgs::StopNavigation::ConstPtr& msg);
-    void navigateToPOICallback(const homer_mapnav_msgs::NavigateToPOI::ConstPtr& msg);
-    void unknownThresholdCallback(const std_msgs::Int8::ConstPtr& msg);
-	void moveBaseSimpleGoalCallback(const geometry_msgs::PoseStamped::ConstPtr& msg);
-
-
-    /** @brief initializes and refreshs parameters */
-	void loadParameters();
-
-    /** @brief Is called when all modules are loaded and thread has started. */
-    virtual void init();
-
-
-    /** @brief Detect & handle possible collision */
-    void handleCollision();
-
-  private:
-  
-
-    /** @brief Start navigation to m_Target on  last_map_data_ */
-    void startNavigation();
-
-    /** @brief Start exploration on last_map_data_ */
-    void startExploration();
-
-    /** @brief Check if obstacles are blocking the way in last_map_data_ */
-    void checkPath();
-
-    /** @brief calculate path from current robot position to target approximation */
-    void calculatePath();
-
-    /** @brief Send message containing current navigation path */
-    void sendPathData();
-
-    /** @brief Sends target reached and stops the robot. */
-    void sendTargetReachedMsg();
-
-    /**
-     * @brief Sends a target unreachable with given reason and stops the robot.
-     * @param reason reason for unreachable target (see homer_mapnav_msgs::TargetUnreachable for possible reasons)
-     */
-    void sendTargetUnreachableMsg( int8_t reason );
-	
-	void refreshParamsCallback(const std_msgs::Empty::ConstPtr& msg);
-
-    /** @brief Navigate robot to next waypoint */
-    void performNextMove();
-
-    /** @brief Finishes navigation or starts turning to target direction if the target position has been reached */
-    void targetPositionReached();
-
-    /** @return Distance from robot_pose_ to point */
-    double distanceTo(geometry_msgs::Point point);
-
-    /** @return Angle from robot_pose_ to point in degrees */
-    int angleToPointDeg(geometry_msgs::Point point);
-
-    /** @brief Set status info */
-    void actualizeStatusInfo();
-
-    /** @brief Calculates current maximal speed based on laser data */
-    float calcSpeedFactor();
-    
-    /** @brief Calculates current maximal backwards distance on map Data */
-    float obstacleBackwardDistance();
-
-    
-    /**
-     * @brief Send move message
-     * @param distance_m distance to drive in m
-     * @param speed_mPerSec driving speed in m/s
-     * @param drive permanently until stopped
-     */
-
-    void sendMoveMessage(double distance_m , double speed_mPerSec, bool permanent = false);
-    
-    /**
-     * @brief Send TurnMessage and set current turn action
-     * @param theta angle to turn (in degrees)
-     * @param speed turning speed
-     * @param turn permanently until stopped
-     */
-    void sendTurnMessage(double theta, double speed, bool permanent = false);
-
-	void sendStopRobot();
-
-    /**
-     * @brief Sets each cell of the map to -1 outside the bounding box
-     *        containing the robot pose and the current target
-     */
-    void maskMap();
-
-    /**
-     * @brief Current path was finished (either successful or not),
-     *        sets state machine to path planning to check if the robot is already at the goal
-     */
-    void currentPathFinished();
-
-    //convenience math functions
-    /**
-     * Computes mean of given input values
-     * @param values Container with values from which to compute mean
-     * @return mean value
-     */
-    template<class ContainerT>
-    static double mean ( const ContainerT& values );
-
-    /**
-     * Computes minimum turn angle from angle 1 to angle 2
-     * @param angle1 from angle
-     * @param angle2 to angle
-     * @return minimal angle needed to turn from angle 1 to angle 2 [-Pi..Pi]
-     */
-    static float minTurnAngle ( float angle1, float angle2 );
-
-    /**
-     * converts value from degree to radiant
-     * @param deg Value in degree
-     * @return value in radiants
-     */
-    static float deg2Rad ( float deg ) { return deg / 180.0*M_PI; }
-
-    /**
-     * converts value from radiants to degrees
-     * @param rad Value in radiants
-     * @return value in degrees
-     */
-    static float rad2Deg ( float rad ) { return rad / M_PI*180.0; }
-
-    /// @brief Worker instances
-
-    Explorer* explorer_;
-
-    /// @brief State machines
-
-    StateMachine<MapType> m_MapTypeMachine;
-    StateMachine<ProcessState> m_MainMachine;
-
-    /// @brief Navigation options & data
-
-    /** list of waypoints subsampled from m_PixelPath */
-    std::vector<geometry_msgs::PoseStamped> waypoints_;
-
-    /** Path planned by Explorer, pixel accuracy */
-    std::vector<Eigen::Vector2i> pixel_path_;
-
-    /** target point */
-    geometry_msgs::Point target_point_;
-
-    /** approximation of the target point is target is in an occupied cell */
-    Eigen::Vector2i target_approx_;
-
-    /** orientation the robot should have at the target point */
-    double target_orientation_;
-
-    /** allowed distance to target */
-    float desired_distance_;
-
-    /** check if the final turn should be skipped */
-    bool skip_final_turn_;
-
-    /**
-     *  check if navigation should perform fast planning. In this mode a path is only planned within
-     *  a bounding box containing the robot pose and the target point
-     */
-    bool fast_path_planning_;
-
-    /** current pose of the robot */
-    geometry_msgs::Pose robot_pose_;
-
-    /** current laser scan */
-    std::vector<geometry_msgs::Point> laser_points_;
-    std::vector<geometry_msgs::Point> m_laser_points_map;
-    std::vector<geometry_msgs::Point> m_back_laser;
-
-    /** time stamp of the last incoming laser scan */
-    ros::Time last_laser_time_;
-
-    /** Distance factor of a frontier cell considered save for exploration */
-    float m_FrontierSafenessFactor;
-
-    /** stores the last m_SpeedFactorMeanFilterSize speed factors */
-    std::deque<float> m_LastSpeedFactors;
-    /** stores the mean of the last speed factors */
-    std::deque<float> m_LastMeanSpeedFactors;
-    /** maximal count of stored last speed factors bevore oldest one will be overwritten */
-    int m_SpeedFactorMeanFilterSize;
-
-    /** minimal speed factor while moving */
-    float m_MinMoveSpeedFactor;
-
-    /** minimal turn speed factor while moving */
-    float m_MinTurnSpeedFactorMoving;
-
-    /** minimal turn speed factor while standing */
-    float m_MinTurnSpeedFactorStanding;
-
-    double m_SafePathWeight;
-
-    /** Number of subsequent times that an obstacle was detected in the planned path */
-    int invalid_path_count_;
-
-    ///map parameters
-    double resolution_;
-    double width_;
-    double height_;
-    geometry_msgs::Pose origin_;
-
-    /// @brief Configuration parameters
-
-    /** maximum move speed of the robot */
-    float m_MaxTransVel;
-    /** maximum turn speed of the robot */
-    int m_MaxRotVel;
-
-	bool m_use_cmd_vel_;
-
-    /** Allowed distances of obstacles to robot. Robot must move within these bounds */
-    std::pair<float,float> m_AllowedObstacleDistance;
-    /** Safe distances of obstacles to robot. If possible, robot should move within these bounds */
-    std::pair<float,float> m_SafeObstacleDistance;
-
-    /** threshold to sample down waypoints */
-    float waypoint_sampling_threshold_;
-
-    /** if distance to nearest obstacle is below collision distance trigger collision avoidance */
-    float collision_distance_;
-    /** do not drive back in collision avoidance when this near target */
-    float collision_distance_near_target_;
-    /** drive this distance backwards when avoiding collision */
-    float backward_distance_;
-
-    /** threshold angle between robot and next waypoint when to turn instead of driving forward */
-    double turn_threshold_angle_;
-
-    /** if true, obstacles in path will be detected and path will be replanned */
-    bool check_path_;
-    /** path will be replanned, if obstacle is present in at least check_path_max_errors consecutive incoming maps  */
-    int check_path_max_errors_;
-
-    /** waypoints will only be checked for obstacles if they are closer than check_path_max_distance to robot */
-    float check_path_max_distance_;
-
-	bool m_avoided_collision;
-
-	double m_min_turn_angle;
-	double m_max_turn_speed;
-	double m_max_move_speed;
-	double m_max_drive_angle;
-	
-	float m_act_speed;
-	float m_act_angle; 
-
-	bool m_path_reaches_target;
-
-    /** timestamp of last incoming map */
-    ros::Time last_map_timestamp_;
-
-    /** last map data */
-    std::vector<int8_t> * last_map_data_;
-
-    //ros specific members
-    tf::TransformListener transform_listener_;
-
-    //subscribers
-    ros::Subscriber map_sub_;
-    ros::Subscriber pose_sub_;
-    ros::Subscriber laser_data_sub_;
-    ros::Subscriber laser_back_data_sub_;
-    ros::Subscriber robot_data_sub_;
-    ros::Subscriber task_finished_sub_;
-    ros::Subscriber start_navigation_sub_;
-    ros::Subscriber stop_navigation_sub_;
-    ros::Subscriber navigate_to_poi_sub_;
-    ros::Subscriber unknown_threshold_sub_;
-	ros::Subscriber refresh_param_sub_;
-	ros::Subscriber m_move_base_simple_goal_sub_;
-
-    //publishers
-    ros::Publisher move_robot_pub_;
-    ros::Publisher turn_robot_pub_;
-    ros::Publisher stop_robot_pub_;
-	ros::Publisher cmd_vel_pub_;
-    ros::Publisher target_reached_pub_;
-    ros::Publisher target_unreachable_pub_;
-    ros::Publisher path_pub_;
-
-
-    //service clients
-    ros::ServiceClient get_POIs_client_;
-};
-
-#endif
diff --git a/homer_navigation/launch/homer_navigation.launch b/homer_navigation/launch/homer_navigation.launch
deleted file mode 100644
index db217818..00000000
--- a/homer_navigation/launch/homer_navigation.launch
+++ /dev/null
@@ -1,4 +0,0 @@
-<launch>
- <rosparam command="load" file="$(find homer_navigation)/config/homer_navigation.yaml"/>
- <node ns="/homer_navigation" name="homer_navigation" pkg="homer_navigation" type="homer_navigation" output="screen"/>
-</launch>
diff --git a/homer_navigation/launch/homer_navigation_followme.launch b/homer_navigation/launch/homer_navigation_followme.launch
deleted file mode 100644
index 419db5e8..00000000
--- a/homer_navigation/launch/homer_navigation_followme.launch
+++ /dev/null
@@ -1,4 +0,0 @@
-<launch>
- <rosparam command="load" file="$(find homer_navigation)/config/homer_navigation_followme.yaml"/>
- <node ns="/homer_navigation" name="homer_navigation" pkg="homer_navigation" type="homer_navigation" output="screen"/>
-</launch>
diff --git a/homer_navigation/launch/homer_navigation_ros.launch b/homer_navigation/launch/homer_navigation_ros.launch
deleted file mode 100644
index 04a131d5..00000000
--- a/homer_navigation/launch/homer_navigation_ros.launch
+++ /dev/null
@@ -1,6 +0,0 @@
-<launch>
- <rosparam command="load" file="$(find homer_navigation)/config/homer_navigation.yaml"/>
- <node ns="/homer_navigation" name="homer_navigation" pkg="homer_navigation" type="homer_navigation" output="screen">
- <remap from="/robot_platform/cmd_vel" to="/cmd_vel"/>
- </node>
-</launch>
diff --git a/homer_navigation/package.xml b/homer_navigation/package.xml
deleted file mode 100644
index 74dbd511..00000000
--- a/homer_navigation/package.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<package>
-  <name>homer_navigation</name>
-  <version>1.0.1</version>
-  <description>The homer_navigation package</description>
-
-  <maintainer email="vseib@uni-koblenz.de">Viktor Seib</maintainer>
-  <author email="mknauf@uni-koblenz.de">Malte Knauf</author>
-  <license>GPLv3</license>
-
-  <buildtool_depend>catkin</buildtool_depend>
-  <build_depend>roscpp</build_depend>
-  <build_depend>roslib</build_depend>
-  <build_depend>homer_nav_libs</build_depend>
-  <build_depend>nav_msgs</build_depend>
-  <build_depend>sensor_msgs</build_depend>
-  <build_depend>homer_mapnav_msgs</build_depend>
-  <build_depend>tf</build_depend>
-  <run_depend>roscpp</run_depend>
-  <run_depend>roslib</run_depend>
-  <run_depend>homer_nav_libs</run_depend>
-  <run_depend>nav_msgs</run_depend>
-  <run_depend>sensor_msgs</run_depend>
-  <run_depend>homer_mapnav_msgs</run_depend>
-  <run_depend>tf</run_depend>
-  <!-- The export tag contains other, unspecified, tags -->
-  <export>
-    <!-- You can specify that this package is a metapackage here: -->
-    <!-- <metapackage/> -->
-
-    <!-- Other tools can request additional information be placed here -->
-
-  </export>
-</package>
diff --git a/homer_navigation/readme.pdf b/homer_navigation/readme.pdf
deleted file mode 100644
index 808199ca0b0e7635cc36e1000a53c87196827351..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 118724
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
z%0D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

diff --git a/homer_navigation/src/homer_navigation_node.cpp b/homer_navigation/src/homer_navigation_node.cpp
deleted file mode 100644
index 5897946e..00000000
--- a/homer_navigation/src/homer_navigation_node.cpp
+++ /dev/null
@@ -1,1069 +0,0 @@
-
-#include <vector>
-#include <iostream>
-#include <sstream>
-#include <cmath>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include <ros/package.h>
-
-#include "homer_navigation/homer_navigation_node.h"
-
-//messages
-#include <std_msgs/Empty.h>
-#include <homer_mapnav_msgs/TargetUnreachable.h>
-#include <homer_mapnav_msgs/GetPointsOfInterest.h>
-#include <homer_mapnav_msgs/ModifyMap.h>
-#include <nav_msgs/Path.h>
-#include <std_msgs/Int8.h>
-#include <tools/tools.h>
-#include <tools/loadRosConfig.h>
-
-//nav_libs
-#include "Explorer/Explorer.h"
-#include "SpeedControl/SpeedControl.h"
-
-using namespace std;
-
-
-HomerNavigationNode::HomerNavigationNode()
-{
-    ros::NodeHandle nh;
-
-	srand(time(NULL));// Initialize random numbers
-
-    //subscribers
-    map_sub_ 				= nh.subscribe<nav_msgs::OccupancyGrid>("/map", 1, &HomerNavigationNode::mapCallback, this);
-    pose_sub_				= nh.subscribe<geometry_msgs::PoseStamped>("/pose", 1, &HomerNavigationNode::poseCallback, this);
-    laser_data_sub_			= nh.subscribe<sensor_msgs::LaserScan>("/scan", 1, &HomerNavigationNode::laserDataCallback, this);
-    laser_back_data_sub_    = nh.subscribe<sensor_msgs::LaserScan>("/back_scan", 1, &HomerNavigationNode::backLaserCallback, this);
-    start_navigation_sub_ 	= nh.subscribe<homer_mapnav_msgs::StartNavigation>("/homer_navigation/start_navigation", 1, &HomerNavigationNode::startNavigationCallback, this);
-    stop_navigation_sub_ 	= nh.subscribe<homer_mapnav_msgs::StopNavigation>("/homer_navigation/stop_navigation", 1, &HomerNavigationNode::stopNavigationCallback, this);
-    navigate_to_poi_sub_	= nh.subscribe<homer_mapnav_msgs::NavigateToPOI>("/homer_navigation/navigate_to_POI", 1, &HomerNavigationNode::navigateToPOICallback, this);
-    unknown_threshold_sub_ 	= nh.subscribe<std_msgs::Int8>("/homer_navigation/unknown_threshold", 1, &HomerNavigationNode::unknownThresholdCallback, this);
-    refresh_param_sub_ 		= nh.subscribe<std_msgs::Empty>("/homer_navigation/refresh_params", 1, &HomerNavigationNode::refreshParamsCallback, this);
-
-	cmd_vel_pub_			= nh.advertise<geometry_msgs::Twist>("/robot_platform/cmd_vel", 1);
-    target_reached_pub_ 	= nh.advertise<std_msgs::Empty>("/homer_navigation/target_reached", 1);
-    target_unreachable_pub_ = nh.advertise<homer_mapnav_msgs::TargetUnreachable>("/homer_navigation/target_unreachable", 1);
-    path_pub_ 				= nh.advertise<nav_msgs::Path>("/homer_navigation/path", 1);
-    get_POIs_client_ 		= nh.serviceClient<homer_mapnav_msgs::GetPointsOfInterest>("/map_manager/get_pois");
-
-
-	m_move_base_simple_goal_sub_ = nh.subscribe<geometry_msgs::PoseStamped>("/move_base_simple/goal", 1, &HomerNavigationNode::moveBaseSimpleGoalCallback, this); // for RVIZ usage
-
-
-
-    m_MapTypeMachine.setName( "HomerNavigation Node" );
-	ADD_MACHINE_STATE( m_MapTypeMachine, SLAM_MAP );
-	ADD_MACHINE_STATE( m_MapTypeMachine, NAVIGATION_MAP );
-	m_MapTypeMachine.setState( SLAM_MAP );
-
-    m_MainMachine.setName( "HomerNavigation Main" );
-	ADD_MACHINE_STATE( m_MainMachine, IDLE );
-	ADD_MACHINE_STATE( m_MainMachine, AWAITING_EXPLORATION_MAP );
-	ADD_MACHINE_STATE( m_MainMachine, AWAITING_PATHPLANNING_MAP );
-	ADD_MACHINE_STATE( m_MainMachine, FOLLOWING_PATH );
-	ADD_MACHINE_STATE( m_MainMachine, AVOIDING_COLLISION );
-	ADD_MACHINE_STATE( m_MainMachine, FINAL_TURN );
-    ADD_MACHINE_STATE( m_MainMachine, TARGET_REACHED );
-	
-	m_avoided_collision = false; 
-	 
-    init();
-    m_act_speed = 0;
-    m_act_angle = 0; 
-}
-
-void HomerNavigationNode::loadParameters()
-{
-    SpeedControl::loadDimensions();
-    
-	//Explorer constructor 
-    loadConfigValue("/homer_navigation/safe_path_weight", 				m_SafePathWeight);
-    loadConfigValue("/homer_mapping/resolution", 						resolution_);
-    loadConfigValue("/homer_navigation/allowed_obstacle_distance/min", 	m_AllowedObstacleDistance.first);
-    loadConfigValue("/homer_navigation/allowed_obstacle_distance/max", 	m_AllowedObstacleDistance.second);
-    m_AllowedObstacleDistance.first /= resolution_;
-    m_AllowedObstacleDistance.second/= resolution_;
-    loadConfigValue("/homer_navigation/safe_obstacle_distance/min", 	m_SafeObstacleDistance.first);
-    loadConfigValue("/homer_navigation/safe_obstacle_distance/max", 	m_SafeObstacleDistance.second);
-    m_SafeObstacleDistance.first /= resolution_;
-    m_SafeObstacleDistance.second /= resolution_;
-    loadConfigValue("/homer_navigation/frontier_safeness_factor", 		m_FrontierSafenessFactor);
-	
-	//Explorer     
-    loadConfigValue("/homer_navigation/waypoint_sampling_threshold", 	waypoint_sampling_threshold_);    
-    
-    //check path 
-    loadConfigValue("/homer_navigation/check_path", 					check_path_);
-    loadConfigValue("/homer_navigation/check_path_max_errors", 			check_path_max_errors_);
-    loadConfigValue("/homer_navigation/check_path_max_distance", 		check_path_max_distance_);
-    
-    //collision 
-    loadConfigValue("/homer_navigation/collision_distance", 			collision_distance_);
-    loadConfigValue("/homer_navigation/collision_distance_near_target", collision_distance_near_target_);
-
-	//moveRobot config values
-	loadConfigValue("/homer_navigation/backward_distance", 							 backward_distance_);
-	loadConfigValue("/homer_navigation/max_trans_vel", 								 m_MaxTransVel);
-    loadConfigValue("/homer_navigation/max_rot_vel", 								 m_MaxRotVel);
-    loadConfigValue("/homer_navigation/speed_control/last_speedfactor_count", 		 m_SpeedFactorMeanFilterSize);
-    loadConfigValue("/homer_navigation/speed_control/min_move_speedfactor", 		 m_MinMoveSpeedFactor);
-    loadConfigValue("/homer_navigation/speed_control/min_turn_speedfactor_moving", 	 m_MinTurnSpeedFactorMoving);
-    loadConfigValue("/homer_navigation/speed_control/min_turn_speedfactor_standing", m_MinTurnSpeedFactorStanding);
-    loadConfigValue("/homer_navigation/turn_threshold_angle", 						 turn_threshold_angle_);
-
-	//cmd_vel config values
-    loadConfigValue("/homer_navigation/use_cmd_vel", 					m_use_cmd_vel_);
-    loadConfigValue("/homer_navigation/min_turn_angle", 				m_min_turn_angle);
-    loadConfigValue("/homer_navigation/max_turn_speed", 				m_max_turn_speed);
-    loadConfigValue("/homer_navigation/max_move_speed", 				m_max_move_speed);
-    loadConfigValue("/homer_navigation/max_drive_angle",				m_max_drive_angle);
-
-}
-
-
-void HomerNavigationNode::init()
-{
-    last_map_timestamp_ = ros::Time(0);
-
-	loadParameters();
-
-    robot_pose_.position.x = 0.0;
-    robot_pose_.position.y = 0.0;
-    robot_pose_.position.z = 0.0;
-    robot_pose_.orientation = tf::createQuaternionMsgFromYaw(0.0);
-
-    last_laser_time_ = ros::Time::now();
-
-    explorer_ = new Explorer ( m_AllowedObstacleDistance.first, m_AllowedObstacleDistance.second,
-								m_SafeObstacleDistance.first, m_SafeObstacleDistance.second,
-								m_SafePathWeight, m_FrontierSafenessFactor );
-
-    m_MainMachine.setState ( IDLE );
-}
-
-HomerNavigationNode::~HomerNavigationNode()
-{
-    if ( explorer_ )
-	{
-        delete explorer_;
-	}
-    if(last_map_data_)
-    {
-        delete last_map_data_;
-    }
-}
-
-void HomerNavigationNode::sendStopRobot()
-{
-    m_act_speed = 0;
-    m_act_angle = 0; 
-	geometry_msgs::Twist cmd_vel_msg;
-	cmd_vel_msg.linear.x = 0;
-	cmd_vel_msg.linear.y = 0;
-	cmd_vel_msg.linear.z = 0;
-	cmd_vel_msg.angular.x = 0;
-	cmd_vel_msg.angular.y = 0;
-	cmd_vel_msg.angular.z = 0;
-	cmd_vel_pub_.publish(cmd_vel_msg);
-}
-
-void HomerNavigationNode::idleProcess()
-{
-	if ( m_MainMachine.state() == FOLLOWING_PATH )
-	{
-	    if ( (ros::Time::now() - last_laser_time_) > ros::Duration(2.0) )
-	    {
-	        ROS_ERROR_STREAM( "Laser data timeout!\n");
-			sendTargetUnreachableMsg(homer_mapnav_msgs::TargetUnreachable::LASER_TIMEOUT);
-		}
-	}
-}
-
-
-void HomerNavigationNode::calculatePath()
-{
-    float desired_distance_2 = desired_distance_ - 0.05;
-    if ( desired_distance_2 < resolution_ )
-	{
-      desired_distance_2 = resolution_;
-	}
-    explorer_->setStart ( map_tools::toMapCoords( robot_pose_.position,  origin_, resolution_) );
-
-    if ( map_tools::distance( map_tools::fromMapCoords( target_approx_, origin_, resolution_ ), target_point_ ) <= desired_distance_ )
-	{
-      ROS_INFO_STREAM( "There is a way to the target circle. Planning direct path." );
-      explorer_->setTarget ( map_tools::toMapCoords( target_point_, origin_, resolution_ ), desired_distance_2 / resolution_ );
-	}
-	else
-	{
-      ROS_INFO_STREAM( "The target area is not reachable. Trying to go as close as possible." );
-      explorer_->setTarget ( target_approx_, 0 );
-	}
-
-	bool success;
-    pixel_path_ = explorer_->getPath( success );
-    if ( !success )
-	{
-        ROS_WARN_STREAM("No path found for navigation, reporting as unreachable." );
-        sendTargetUnreachableMsg(homer_mapnav_msgs::TargetUnreachable::NO_PATH_FOUND);
-	}
-	else
-	{
-		ROS_INFO_STREAM("homer_navigation::calculatePath - Path Size: " << pixel_path_.size());
-		std::vector<Eigen::Vector2i> waypoint_pixels = explorer_->sampleWaypointsFromPath ( pixel_path_, waypoint_sampling_threshold_ );
-		waypoints_.clear();
-		for(std::vector<Eigen::Vector2i>::iterator it = waypoint_pixels.begin(); it != waypoint_pixels.end(); ++it)
-		{
-		    geometry_msgs::PoseStamped poseStamped;
-		    poseStamped.pose.position = map_tools::fromMapCoords(*it, origin_, resolution_);
-		    poseStamped.pose.orientation.x = 0.0;
-		    poseStamped.pose.orientation.y = 0.0;
-		    poseStamped.pose.orientation.z = 0.0;
-		    poseStamped.pose.orientation.w = 1.0;
-		    waypoints_.push_back(poseStamped);
-		}
-
-		ROS_INFO_STREAM("homer_navigation::calculatePath - Path Size: " << waypoints_.size());
-
-		sendPathData();
-		//make sure no timeout occurs after long calculation time
-		last_laser_time_ = ros::Time::now();
-	}
-}
-
-
-void HomerNavigationNode::startExploration()
-{
-    ROS_INFO_STREAM( "Starting exploration." );
-/*
-	m_Explorer->resetExploration();
-	m_Explorer->setOccupancyMap ( gridSize, gridSize, mapData, m_ExploredRegion );
-	m_Explorer->setFrontierSafenessFactor( m_FrontierSafenessFactor );
-	m_Explorer->setStart ( m_CoordinateConverter->worldToMap ( m_RobotPose ) );
-
-	bool success;
-	m_PixelPath= m_Explorer->getExplorationTransformPath( success );
-
-	if ( success ) {
-		m_Target = m_CoordinateConverter->mapToWorld( m_PixelPath.back() );
-		m_TargetApprox = m_PixelPath.back();
-	}
-
-	vector<Pixel> waypointPixels = m_Explorer->sampleWaypointsFromPath ( m_PixelPath, m_WaypointSamplingThreshold );
-	m_Waypoints = m_CoordinateConverter->mapToWorld ( waypointPixels );
-*/
-
-    if ( pixel_path_.size() == 0 )
-	{
-        ROS_WARN_STREAM("No path found for exploration, sending NoTargetM." );
-        //sendMessage ( new NoTargetM() );
-		m_MainMachine.setState( IDLE );
-	}
-	else
-	{
-		m_MainMachine.setState ( FOLLOWING_PATH );
-		sendPathData();
-	}
-  //make sure no timeout occurs after long calculation time
-    last_laser_time_ = ros::Time::now();
-}
-
-
-void HomerNavigationNode::startNavigation()
-{
-    ROS_INFO_STREAM("Starting navigation to " << target_point_.x << "," << target_point_.y);
-
-    if ( distanceTo(target_point_) < desired_distance_ )
-	{
-        ROS_INFO_STREAM( "Will not (re-)plan path: Target position already reached." );
-		targetPositionReached();
-		return;
-	}
-    ROS_INFO_STREAM( "Distance to target still too large (" << distanceTo( target_point_ ) << "m; requested: " << desired_distance_ << "m)" );
-
-    ROS_DEBUG_STREAM("homer_navigation_node::startNavigation: target point " << target_point_.x << " " << target_point_.y);
-    Eigen::Vector2i new_target = map_tools::toMapCoords(target_point_, origin_, resolution_);
-    ROS_DEBUG_STREAM("homer_navigation_node::startNavigation: target cell " << new_target);
-    Eigen::Vector2i new_target_approx;
-
-	switch ( m_MapTypeMachine.state() )
-	{
-		case SLAM_MAP:
-        {
-            ROS_INFO_STREAM( "Resetting occupancy map." );
-
-            if(fast_path_planning_)
-            {
-                maskMap();
-            }
-            explorer_->setOccupancyMap(width_, width_, origin_, &(*last_map_data_)[0]);
-            explorer_->setStart(map_tools::toMapCoords(robot_pose_.position, origin_, resolution_));
-            new_target_approx = explorer_->getNearestAccessibleTarget(new_target);
-			break;
-        }
-		case NAVIGATION_MAP:
-            ROS_INFO_STREAM( "Updating obstacles in externally assigned navigation map." );
-            explorer_->updateObstacles( width_, width_, origin_, &(*last_map_data_)[0] );
-            explorer_->setStart(map_tools::toMapCoords(robot_pose_.position, origin_, resolution_));
-            new_target_approx = new_target;
-			break;
-	}
-
-    geometry_msgs::Point new_target_approx_world = map_tools::fromMapCoords(new_target_approx, origin_, resolution_);
-    ROS_INFO_STREAM("start Navigation: Approx target: " << new_target_approx_world);
-
-    bool new_approx_is_better = ( map_tools::distance( robot_pose_.position, target_point_ ) - map_tools::distance( new_target_approx_world, target_point_ ) ) > 0.2;
-    bool new_approx_reaches_target = ( map_tools::distance(new_target_approx_world, target_point_ ) < desired_distance_ );
-    m_path_reaches_target = new_approx_reaches_target;
-    if ( !new_approx_is_better && !new_approx_reaches_target )
-	{
-      ROS_WARN_STREAM( "No better way to target found, turning and then reporting as unreachable."
-          <<     endl << "Distance to target: " << distanceTo( target_point_ ) << "m; requested: " << desired_distance_ << "m" );
-	  m_MainMachine.setState( FINAL_TURN );
-	}
-	else
-	{
-      target_approx_ = new_target_approx;
-      m_MainMachine.setState ( FOLLOWING_PATH );
-      calculatePath();
-	}
-  }
-  
-void HomerNavigationNode::sendPathData()
-{
-    geometry_msgs::PoseStamped pose_stamped;
-    pose_stamped.pose = robot_pose_;
-    pose_stamped.header.frame_id = "/map";
-	pose_stamped.header.stamp = ros::Time::now();
-	
-    nav_msgs::Path msg;
-    msg.poses = waypoints_;
-    if(waypoints_.size() > 0)
-        msg.poses.insert(msg.poses.begin(), pose_stamped);
-    path_pub_.publish(msg);
- }
-
-void HomerNavigationNode::sendTargetReachedMsg() {
-	sendStopRobot();
-    m_MainMachine.setState( IDLE );
-    std_msgs::Empty reached_msg;
-    target_reached_pub_.publish(reached_msg);
-    waypoints_.clear();
-    nav_msgs::Path empty_path_msg;
-    empty_path_msg.poses = waypoints_;
-    path_pub_.publish(empty_path_msg);
-    ROS_INFO_STREAM("TargetReachedMsg");
-}
-
-void HomerNavigationNode::sendTargetUnreachableMsg( int8_t reason ) {
-	sendStopRobot();
-	m_MainMachine.setState( IDLE );
-    homer_mapnav_msgs::TargetUnreachable unreachable_msg;
-    unreachable_msg.reason = reason;
-    target_unreachable_pub_.publish(unreachable_msg);
-    waypoints_.clear();
-    nav_msgs::Path empty_path_msg;
-    empty_path_msg.poses = waypoints_;
-    path_pub_.publish(empty_path_msg);
-    ROS_INFO_STREAM("TargetUnreachableMsg");
-}
-
-void HomerNavigationNode::targetPositionReached()
-{
-  //we're as close s we can get, target reached
-    ROS_INFO_STREAM( "Target position reached. Distance to target: " << distanceTo( target_point_ ) << "m. Desired distance:" << desired_distance_ << "m" );
-	sendStopRobot();
-   // usleep( 30000 );
-    waypoints_.clear();
-    sendPathData();
-	m_MainMachine.setState( FINAL_TURN );
-    ROS_INFO_STREAM("Turning to look-at point");
-}
-
-
-void HomerNavigationNode::checkPath()
-{
-    invalid_path_count_=0;
-    for ( unsigned i=0; i<pixel_path_.size(); i++ )
-	{
-        geometry_msgs::Point p = map_tools::fromMapCoords(pixel_path_.at(i), origin_, resolution_);
-        if ( distanceTo(p) > check_path_max_distance_ )
-		{
-			continue;
-		}
-        if (map_tools::findValue( last_map_data_, width_, height_, pixel_path_[i].x(), pixel_path_[i].y(), 90, m_AllowedObstacleDistance.first ) )
-		{
-            invalid_path_count_++;
-            ROS_WARN_STREAM("Obstacle detected in current path " << invalid_path_count_ << " of " << check_path_max_errors_ << " times.");
-
-            if ( invalid_path_count_ >= check_path_max_errors_ )
-            {
-                ROS_WARN_STREAM( "Replanning path." );
-                currentPathFinished();
-			}
-			return;
-		}
-	}
-}
-
-void HomerNavigationNode::handleCollision ()
-{
-	if ( m_MainMachine.state()== FOLLOWING_PATH )
-	{
-        sendStopRobot();
-        if( distanceTo( target_point_) < collision_distance_near_target_ )
-        {
-            ROS_INFO_STREAM("Collision detected near target. Switch to final turn.");
-            targetPositionReached();
-        }
-        else
-        {
-            m_MainMachine.setState( AVOIDING_COLLISION );
-            ROS_WARN_STREAM( "Collision detected while following path!" );
-        }
-    }
-}
-
-float HomerNavigationNode::calcSpeedFactor()
-{
-    float speedFactor = SpeedControl::getSpeedFactor(laser_points_, m_MinMoveSpeedFactor, 1.0 );
-
-	m_LastSpeedFactors.push_back( speedFactor );
-	if ( m_LastSpeedFactors.size() > m_SpeedFactorMeanFilterSize ) { m_LastSpeedFactors.pop_front(); }
-
-    float speedFactorMean = mean( m_LastSpeedFactors );
-
-	return speedFactorMean;
-}
-
-
-void HomerNavigationNode::performNextMove()
-{
-    float maxMoveDistance = SpeedControl::getMaxMoveDistance ( laser_points_ );
-	float speedFactor = calcSpeedFactor();
-
-	switch ( m_MainMachine.state() )
-	{
-		case FOLLOWING_PATH:
-		{
-            if ( distanceTo( target_point_ ) < desired_distance_ )
-			{
-                ROS_INFO_STREAM( "Desired distance to target was reached." );
-				targetPositionReached();
-				return;
-            }
-
-			float waypointRadiusLaser = 0.125 * maxMoveDistance;
-
-            Eigen::Vector2i waypointPixel = map_tools::toMapCoords(waypoints_[0].pose.position, origin_, resolution_);
-            float obstacleDistanceMap = explorer_->getObstacleTransform()->getValue( waypointPixel.x(), waypointPixel.y() );
-            float waypointRadiusMap = 0.125 * obstacleDistanceMap * resolution_;
-
-			float waypointRadius = waypointRadiusLaser + waypointRadiusMap;
-            if ( ( waypointRadius < resolution_ ) || ( waypoints_.size() == 1 ) )
-			{
-                waypointRadius = resolution_;
-			}
-
-            //if we have accidentaly skipped waypoints, recalculate path
-			float minDistance=FLT_MAX;
-			unsigned nearestWaypoint=0;
-            for ( unsigned i=0; i<waypoints_.size(); i++ )
-			{
-                if ( distanceTo( waypoints_[i].pose.position ) < minDistance ) {
-					nearestWaypoint = i;
-                    minDistance = distanceTo( waypoints_[i].pose.position );
-				}
-			}
-			if ( nearestWaypoint != 0 )
-			{
-                ROS_WARN_STREAM("Waypoints skipped. Recalculating path!");
-				calculatePath();
-				if ( m_MainMachine.state() != FOLLOWING_PATH ) { break; }
-			}
-
-            ROS_DEBUG_STREAM("NextMove DEBUG VALUES: maxMoveDistance="<< maxMoveDistance <<"\n"
-                            << "\tWaypointRadiusLaser=" << waypointRadiusLaser << "\n\t"
-                            << "obstacleDistanceMap=" << obstacleDistanceMap << "\n\t"
-                            << "");
-
-            //check if current waypoint has been reached
-            if ( (waypoints_.size() != 0) && ( distanceTo( waypoints_[0].pose.position ) < waypointRadius ) )
-            {
-                waypoints_.erase ( waypoints_.begin() );
-                ROS_DEBUG_STREAM("homer_navigation::performNextMove(): Current waypoint has been reached! Still " << waypoints_.size() << " to reach!");
-            }
-
-			sendPathData();
-
-			ROS_ERROR_STREAM("waypointRadius: " << waypointRadius);
-            //last wayoint reached
-            if ( waypoints_.size() == 0 )
-			{
-                ROS_INFO_STREAM("Last waypoint reached");
-				currentPathFinished();
-				return;
-            }
-
-            geometry_msgs::Point currentWaypoint = waypoints_[0].pose.position;
-
-			double distanceToWaypoint = distanceTo ( currentWaypoint );
-			double angleToWaypoint = angleToPointDeg ( currentWaypoint );
-
-            ROS_DEBUG_STREAM("homer_navigation::performNextMove(): Distance to waypoint: "<<distanceToWaypoint<<" Angle to waypoint: "<< (angleToWaypoint) << " Waypoint: " << currentWaypoint << "Robot Pose: " << robot_pose_.position << " Robot orientation " << tf::getYaw(robot_pose_.orientation)) ;
-
-			ostringstream stream;
-			stream.precision(2);
-
-			if (!m_use_cmd_vel_) 
-			{
-				ROS_ERROR_STREAM("Not supported");
-			}
-				//move to next waypoint if heading in right direction
-			else // else use cmd_vel
-			{
-				if (angleToWaypoint < -180)
-				{
-					angleToWaypoint += 360;
-				}	
-
-				//linear speed calculation
-				double speed = distanceToWaypoint; 
-				if (speed < 0 )
-				{
-					speed = max(speed,-m_max_move_speed);
-				}
-				else
-				{
-					speed = min(speed,m_max_move_speed);
-				}
-				if(m_avoided_collision)
-				{
-					if( std::abs(angleToWaypoint) < 10)
-					{
-						m_avoided_collision = false;
-					}
-					else
-					{
-						speed = 0;
-					}
-				}
-				//linear speed calculation end
-				//angular speed calculation
-				double angle = angleToWaypoint*3.14/180.0;
-				if (abs(angle) < m_min_turn_angle)
-				{
-					angle = 0.0;
-				}
-				else
-				{
-					if (abs(angle) > m_max_drive_angle)
-					{
-						speed = 0.0;
-					}
-					if (angle < 0 )
-					{
-						angle = max(angle,-m_max_turn_speed);
-					}
-					else
-					{
-						angle = min(angle,m_max_turn_speed);
-					}
-					if (distanceToWaypoint < 1.0)
-					{
-					angle *= distanceToWaypoint;
-					}
-					// min speed for angles because under 0.35 the machine is really really slow
-					if (speed < 0.07)
-					{
-						if ( angle < 0 ) 
-						{
-							angle = min(angle,-0.45);
-						}
-						else
-						{
-							angle = max(angle,0.45);
-						}
-					}
-				}
-				//angular speed calculation end			
-
-				m_act_speed = speed;
-    			m_act_angle = angle; 
-				geometry_msgs::Twist cmd_vel_msg;
-				cmd_vel_msg.linear.x = speed;			
-				cmd_vel_msg.angular.z = angle;
-				cmd_vel_pub_.publish(cmd_vel_msg);
-
-				stream << "Driving & turning" << endl;
-				stream << "linear: " << speed << " angular: " << angle << endl;
-				stream << "distanceToWaypoint:" << distanceToWaypoint << "angleToWaypoint: " << angleToWaypoint << endl;
-			}
-			ROS_INFO_STREAM( stream.str() );
-			break;
-		}
-
-		case AVOIDING_COLLISION:
-		{
-            if( distanceTo( target_point_) < collision_distance_near_target_ )
-            {
-                ROS_INFO_STREAM("Collision detected near target. Switch to final turn.");
-                targetPositionReached();
-            } 
-			else if ( maxMoveDistance <= collision_distance_ )
-			{
-				ostringstream stream;
-                stream << "Maximum driving distance too short (" << maxMoveDistance << "m)! Moving back.";
-                ROS_WARN_STREAM( stream.str() );
-				if (!m_use_cmd_vel_)
-				{
-					ROS_ERROR_STREAM("Not supported");
-				}
-				else // cmd_vel
-				{
-                    geometry_msgs::Twist cmd_vel_msg;
-                    if(HomerNavigationNode::obstacleBackwardDistance() > 0.4)
-                    {
-                        cmd_vel_msg.linear.x = -0.3;
-                    }
-                    else
-                    {
-                        cmd_vel_msg.angular.z = -0.45;
-                    }
-                    cmd_vel_pub_.publish(cmd_vel_msg);
-				}
-			} 
-			else
-			{
-				m_avoided_collision = true;
-                ROS_WARN_STREAM( "Collision avoided. Updating path." );
-                currentPathFinished();
-			}
-			break;
-		}
-		case FINAL_TURN:
-		{
-			if ( skip_final_turn_ ) 
-			{
-                ROS_INFO_STREAM("Final turn skipped. Target reached.");
-                if( m_path_reaches_target	)
-                {
-        			sendTargetReachedMsg();
-        		}
-        		else
-        		{
-        			sendTargetUnreachableMsg(homer_mapnav_msgs::TargetUnreachable::NO_PATH_FOUND);
-        		}
-				break;
-			}
-
-			double turnAngle = minTurnAngle( tf::getYaw(robot_pose_.orientation), target_orientation_ );
-			ROS_INFO_STREAM("homer_navigation::PerformNextMove:: Final Turn. Robot orientation: " << rad2Deg(tf::getYaw(robot_pose_.orientation)) << ". Target orientation: " << rad2Deg(target_orientation_) );
-			ROS_DEBUG_STREAM ( "homer_navigation::PerformNextMove:: turnAngle: " << rad2Deg(turnAngle));
-			if (m_use_cmd_vel_ ) // final turn with cmd_vel
-			{
-				if (turnAngle< 0 )
-				{
-					turnAngle= max(turnAngle,-m_max_turn_speed);
-				}
-				else
-				{
-					turnAngle = min(turnAngle,m_max_turn_speed);
-				}
-				
-				if (abs(turnAngle) < m_min_turn_angle) 
-				{
-					ROS_INFO_STREAM(":::::::TARGET REACHED BECAUSE lower "<<m_min_turn_angle);
-					if( m_path_reaches_target	)
-		            {
-		    			sendTargetReachedMsg();
-		    		}
-		    		else
-		    		{
-		    			sendTargetUnreachableMsg(homer_mapnav_msgs::TargetUnreachable::NO_PATH_FOUND);
-		    		}
-				}
-				else
-				{
-					geometry_msgs::Twist cmd_vel_msg;
-					cmd_vel_msg.angular.z = turnAngle;
-					cmd_vel_pub_.publish(cmd_vel_msg);				
-				}
-			}
-			break;
-		}
-
-		case AWAITING_EXPLORATION_MAP:
-		case AWAITING_PATHPLANNING_MAP:
-        {
-      //make sure that the robot doesn't move
-            ROS_INFO_STREAM("Awaiting pathplanning map");
-			sendStopRobot();
-			break;
-        }
-        case IDLE:
-			break;
-    }
-}
-
-void HomerNavigationNode::currentPathFinished() // also used for replanning
-{
-    ROS_INFO_STREAM( "Current path was finished, initiating recalculation.");
-	waypoints_.clear();
-	sendStopRobot();
-	m_MainMachine.setState( AWAITING_PATHPLANNING_MAP );
-
-}
-
-// returns angle to target point in degrees(!)
-int HomerNavigationNode::angleToPointDeg ( geometry_msgs::Point target )
-{
-    double cx = robot_pose_.position.x;
-    double cy = robot_pose_.position.y;
-    int targetAngle = rad2Deg( atan2 ( target.y - cy, target.x - cx ) );
-    int currentAngle = rad2Deg( tf::getYaw(robot_pose_.orientation) );
-
-    int angleDiff = targetAngle - currentAngle;
-    angleDiff = (angleDiff + 180) % 360 - 180;
-	return angleDiff;
-}
-
-
-double HomerNavigationNode::distanceTo ( geometry_msgs::Point target )
-{
-    double cx = robot_pose_.position.x;
-    double cy = robot_pose_.position.y;
-    double distance_to_target_2 = ( cx - target.x ) * ( cx - target.x ) + ( cy - target.y ) * ( cy - target.y );
-    return sqrt ( distance_to_target_2 );
-}
-
-float HomerNavigationNode::obstacleBackwardDistance()
-{
-    float min_y = -0.27; 
-    float max_y =  0.27;
-
-    float back_distance = 4;
-
-    for(float depth = -0.3 ; depth > -1.0; depth -= 0.01) 
-    {
-        for(float y = min_y ; y <= max_y ; y += 0.1) 
-        {
-            geometry_msgs::Point base_link_point;
-            base_link_point.x = depth;
-            base_link_point.y = y;
-            geometry_msgs::Point map_point = map_tools::transformPoint(base_link_point, transform_listener_ ,"/base_link", "/map");
-            int i = map_tools::map_index(map_point, origin_ ,width_,resolution_);
-            if(last_map_data_->at(i) > 90)
-            {
-              if(back_distance > HomerNavigationNode::distanceTo(map_point))
-              {
-                  back_distance = HomerNavigationNode::distanceTo(map_point);
-              }
-            }
-        }
-        if(back_distance != 4)
-        {
-            break;
-        }
-    }
-    ROS_ERROR_STREAM("Back Distance: "<< back_distance);
-    return back_distance;
-}
-
-void HomerNavigationNode::actualizeStatusInfo()
-{
-	ostringstream stream;
-	stream << m_MapTypeMachine.stateString() << '\n'
-           << m_MainMachine.stateString();
-    ROS_DEBUG_STREAM( stream.str() );
-}
-
-void HomerNavigationNode::maskMap()
-{
-    //generate bounding box
-    ROS_INFO_STREAM("Calculating Bounding box for fast planning");
-    Eigen::Vector2i pose_pixel =  map_tools::toMapCoords( robot_pose_.position,  origin_, resolution_);
-    Eigen::Vector2i target_pixel =  map_tools::toMapCoords( target_point_,  origin_, resolution_);
-    Eigen::Vector2i safe_pixel_distance(m_AllowedObstacleDistance.first * 4,
-                                        m_AllowedObstacleDistance.first * 4);
-    Eigen::AlignedBox2i planning_box;
-    planning_box.extend(pose_pixel);
-    planning_box.extend(target_pixel);
-    ROS_INFO_STREAM("Bounding Box: (" << planning_box.min() << " " << planning_box.max());
-    Eigen::AlignedBox2i safe_planning_box(planning_box.min() - safe_pixel_distance, planning_box.max() + safe_pixel_distance);
-    ROS_INFO_STREAM("safe Bounding Box: (" << safe_planning_box.min() << " " << safe_planning_box.max());
-    ROS_INFO_STREAM("min in m: " <<map_tools::fromMapCoords(safe_planning_box.min(), origin_, resolution_));
-    ROS_INFO_STREAM("max in m: "<<map_tools::fromMapCoords(safe_planning_box.max(), origin_, resolution_));
-    for(size_t x = 0; x < width_; x++)
-  	{
-        for(size_t y = 0; y < width_; y++)
-        {
-            if(!safe_planning_box.contains(Eigen::Vector2i(x, y)))
-            {
-                last_map_data_->at(y * width_ + x) = -1;
-
-            }
-		}		
-	}	
-}
-
-//convenience math functions
-float HomerNavigationNode::minTurnAngle( float angle1, float angle2 )
-{
-  angle1 *= 180.0/M_PI;
-  angle2 *= 180.0/M_PI;
-
-  int diff= angle2 - angle1;
-  diff = (diff + 180) % 360 - 180;
-
-  float ret = static_cast<double>(diff) * M_PI/180.0;
-  return ret;
-}
-
-template<class ContainerT>
-double HomerNavigationNode::mean ( const ContainerT& values )
-{
-  typename ContainerT::const_iterator it;
-  it = values.begin();
-  double sum = 0;
-  while ( it != values.end() )
-  {
-    sum += *it;
-    it++;
-  }
-  return sum / double ( values.size() );
-}
-
-void HomerNavigationNode::refreshParamsCallback(const std_msgs::Empty::ConstPtr& msg)
-{
-	ROS_INFO_STREAM("Refreshing Parameters");
-	loadParameters();
-}
-
-void HomerNavigationNode::mapCallback(const nav_msgs::OccupancyGrid::ConstPtr& msg)
-{
-    if(msg->info.height != msg->info.width)
-    {
-        ROS_ERROR_STREAM("Incoming Map not quadratic. No map update!");
-        return;
-    }
-    if(msg->header.stamp != last_map_timestamp_)
-    {
-        last_map_timestamp_ = msg->header.stamp;
-        last_map_data_ = new std::vector<int8_t>(msg->data);
-        origin_ = msg->info.origin;
-        width_ = msg->info.width;
-        height_ = msg->info.height;
-        resolution_ = msg->info.resolution;
-        
-        Eigen::Vector2i map_point;
-		if(m_laser_points_map.size() > 0)
-		{
-			for(int i = 0; i < m_laser_points_map.size(); i++)
-			{
-				geometry_msgs::Point& point = m_laser_points_map[i];
-				map_point = map_tools::toMapCoords(point, origin_, resolution_);
-				int k = map_point.y() * width_ + map_point.x();
-				if(k < 0 || k > width_*height_)
-				{
-					continue;
-				}
-				last_map_data_->at(k) = homer_mapnav_msgs::ModifyMap::BLOCKED;
-			}
-		}
-		if(m_back_laser.size() > 0 )
-		{
-			for(int i = 0; i < m_back_laser.size(); i++)
-			{
-				geometry_msgs::Point& point = m_back_laser[i];
-				map_point = map_tools::toMapCoords(point, origin_, resolution_);
-				int k = map_point.y() * width_ + map_point.x();
-				if(k < 0 || k > width_*height_)
-				{
-					continue;
-				}
-				last_map_data_->at(k) = homer_mapnav_msgs::ModifyMap::BLOCKED;
-			}
-		}
-		
-        switch ( m_MainMachine.state() )
-        {
-            case AWAITING_EXPLORATION_MAP:
-                if ( m_MapTypeMachine.state() ==  SLAM_MAP )
-                {
-                    startExploration();
-                }
-                break;
-
-            case AWAITING_PATHPLANNING_MAP:
-                startNavigation();
-                break;
-            case FOLLOWING_PATH:
-            {
-                if ( check_path_)
-                {
-                    checkPath();
-                }
-                
-                break;
-			}
-            default:
-                break;
-        }
-    }
-}
-
-void HomerNavigationNode::poseCallback(const geometry_msgs::PoseStamped::ConstPtr& msg)
-{
-    robot_pose_ = msg->pose;
-	performNextMove();
-}
-
-void HomerNavigationNode::laserDataCallback(const sensor_msgs::LaserScan::ConstPtr& msg)
-{
-    float frontal_obstacle_distance;
-    bool collision_detected;
-    
-    last_laser_time_ = ros::Time::now();
-    laser_points_ =  map_tools::laser_ranges_to_points(msg->ranges, msg->angle_min, msg->angle_increment, msg->range_min, msg->range_max, transform_listener_, msg->header.frame_id, "/base_link");                                       
-    m_laser_points_map =  map_tools::laser_ranges_to_points( msg->ranges, msg->angle_min, msg->angle_increment, msg->range_min, msg->range_max, transform_listener_, msg->header.frame_id, "/map");                
-
-    if(m_act_speed == 0) 
-    {
-    	return;
-    }
-    frontal_obstacle_distance = SpeedControl::getMaxMoveDistance ( laser_points_ );
-    collision_detected = frontal_obstacle_distance <= collision_distance_;
-    if(collision_detected)
-    {
-    	handleCollision();
-    }
-}
-
-void HomerNavigationNode::backLaserCallback(const sensor_msgs::LaserScan::ConstPtr& msg)
-{
-	m_back_laser = map_tools::laser_ranges_to_points( msg->ranges, msg->angle_min, msg->angle_increment, msg->range_min, msg->range_max, transform_listener_, msg->header.frame_id, "/map");                
-}
-
-void HomerNavigationNode::startNavigationCallback(const homer_mapnav_msgs::StartNavigation::ConstPtr& msg)
-{
-    ROS_INFO_STREAM("Start navigating to (" << msg->goal.position.x << ", " << msg->goal.position.y << ")");
-    if (m_MainMachine.state() != IDLE) {
-        ROS_WARN_STREAM( "Aborting current operation and starting navigation.\n");
-    }
-
-    m_MapTypeMachine.setState(SLAM_MAP);
-
-    target_point_ = msg->goal.position;
-    target_orientation_ = tf::getYaw(msg->goal.orientation);
-    desired_distance_ = msg->distance_to_target < 0.1 ? 0.1 : msg->distance_to_target;
-	skip_final_turn_ = msg->skip_final_turn;
-    fast_path_planning_ = msg->fast_planning;
-
-    m_LastSpeedFactors.clear();
-
-    ROS_INFO_STREAM("Navigating to target " << target_point_.x << ", " << target_point_.y
-                    << "\nTarget orientation: " << target_orientation_
-                    << "Desired distance to target: " << desired_distance_);
-
-    m_MainMachine.setState( AWAITING_PATHPLANNING_MAP );
-}
-
-
-void HomerNavigationNode::moveBaseSimpleGoalCallback(const geometry_msgs::PoseStamped::ConstPtr& msg)
-{
-	m_avoided_collision 	= false;
-    target_point_ 			= msg->pose.position;
-    target_orientation_ 	= tf::getYaw(msg->pose.orientation);
-	desired_distance_ 		= 0.1;// msg->distance_to_target < 0.1 ? 0.1 : msg->distance_to_target;
-	skip_final_turn_ 		= false;
-    fast_path_planning_ 	= false;
-
-    ROS_INFO_STREAM("Navigating to target via Move Base Simple x: " << target_point_.x << ", y: " << target_point_.y
-                    << "\nTarget orientation: " << target_orientation_
-                    << "Desired distance to target: " << desired_distance_ );
-
-    m_MainMachine.setState( AWAITING_PATHPLANNING_MAP );
-}
-
-void HomerNavigationNode::navigateToPOICallback(const homer_mapnav_msgs::NavigateToPOI::ConstPtr &msg)
-{
-	m_avoided_collision = false;
-    std::string name = msg->poi_name;
-    homer_mapnav_msgs::GetPointsOfInterest srv;
-    get_POIs_client_.call(srv);
-    std::vector<homer_mapnav_msgs::PointOfInterest>::iterator it;
-    for(it = srv.response.poi_list.pois.begin(); it != srv.response.poi_list.pois.end(); ++it)
-    {
-        if(it->name == name)
-        {
-            ROS_INFO_STREAM("Start navigating to (" << it->pose.position.x << ", " << it->pose.position.y << ")");
-            if (m_MainMachine.state() != IDLE) {
-                ROS_WARN_STREAM( "Aborting current operation and starting navigation.\n");
-            }
-
-            m_MapTypeMachine.setState(SLAM_MAP);
-
-			sendStopRobot();
-
-            target_point_ = it->pose.position;
-            target_orientation_ = tf::getYaw(it->pose.orientation);
-            desired_distance_ = msg->distance_to_target < 0.1 ? 0.1 : msg->distance_to_target;
-			skip_final_turn_ = msg->skip_final_turn;
-
-
-            m_LastSpeedFactors.clear();
-
-            ROS_INFO_STREAM("Navigating to target " << target_point_.x << ", " << target_point_.y
-                            << "\nTarget orientation: " << target_orientation_
-                            << "Desired distance to target: " << desired_distance_);
-
-            m_MainMachine.setState( AWAITING_PATHPLANNING_MAP );
-            return;
-        }
-    }
-    ROS_ERROR_STREAM("No point of interest with name '" << msg->poi_name << "' found in current poi list");
-}
-
-void HomerNavigationNode::stopNavigationCallback(const homer_mapnav_msgs::StopNavigation::ConstPtr& msg)
-{
-    ROS_INFO_STREAM("Stopping navigation." );
-    // stop exploring
-    m_MainMachine.setState( IDLE );
-    m_avoided_collision = false;
-	sendStopRobot();
-
-    waypoints_.clear();
-    nav_msgs::Path empty_path_msg;
-    empty_path_msg.poses = waypoints_;
-    path_pub_.publish(empty_path_msg);
-}
-
-void HomerNavigationNode::unknownThresholdCallback(const std_msgs::Int8::ConstPtr &msg)
-{
-    explorer_->setUnknownThreshold(static_cast<int>(msg->data));
-}
-
-int main(int argc, char **argv)
-{
-  ros::init(argc, argv, "homer_navigation");
-
-  HomerNavigationNode node;
-  
-  ros::Rate rate(12);
-
-  while(ros::ok())
-  {
-      ros::spinOnce();
-      node.idleProcess();
-      rate.sleep();
-  }
-
-  return 0;
-}
diff --git a/homer_map_manager/images/rosgraph.png b/images/rosgraph.png
similarity index 100%
rename from homer_map_manager/images/rosgraph.png
rename to images/rosgraph.png
diff --git a/homer_map_manager/images/rosgraph.svg b/images/rosgraph.svg
similarity index 100%
rename from homer_map_manager/images/rosgraph.svg
rename to images/rosgraph.svg
diff --git a/homer_map_manager/mainpage.dox b/mainpage.dox
similarity index 100%
rename from homer_map_manager/mainpage.dox
rename to mainpage.dox
diff --git a/homer_map_manager/manifest.xml b/manifest.xml
similarity index 100%
rename from homer_map_manager/manifest.xml
rename to manifest.xml
diff --git a/homer_map_manager/package.xml b/package.xml
similarity index 100%
rename from homer_map_manager/package.xml
rename to package.xml
diff --git a/homer_map_manager/readme.pdf b/readme.pdf
similarity index 100%
rename from homer_map_manager/readme.pdf
rename to readme.pdf
diff --git a/homer_map_manager/src/Managers/CMakeLists.txt b/src/Managers/CMakeLists.txt
similarity index 100%
rename from homer_map_manager/src/Managers/CMakeLists.txt
rename to src/Managers/CMakeLists.txt
diff --git a/homer_map_manager/src/Managers/MapManager.cpp b/src/Managers/MapManager.cpp
similarity index 100%
rename from homer_map_manager/src/Managers/MapManager.cpp
rename to src/Managers/MapManager.cpp
diff --git a/homer_map_manager/src/Managers/MapManager.h b/src/Managers/MapManager.h
similarity index 100%
rename from homer_map_manager/src/Managers/MapManager.h
rename to src/Managers/MapManager.h
diff --git a/homer_map_manager/src/Managers/MaskingManager.cpp b/src/Managers/MaskingManager.cpp
similarity index 100%
rename from homer_map_manager/src/Managers/MaskingManager.cpp
rename to src/Managers/MaskingManager.cpp
diff --git a/homer_map_manager/src/Managers/MaskingManager.h b/src/Managers/MaskingManager.h
similarity index 100%
rename from homer_map_manager/src/Managers/MaskingManager.h
rename to src/Managers/MaskingManager.h
diff --git a/homer_map_manager/src/Managers/PoiManager.cpp b/src/Managers/PoiManager.cpp
similarity index 100%
rename from homer_map_manager/src/Managers/PoiManager.cpp
rename to src/Managers/PoiManager.cpp
diff --git a/homer_map_manager/src/Managers/PoiManager.h b/src/Managers/PoiManager.h
similarity index 100%
rename from homer_map_manager/src/Managers/PoiManager.h
rename to src/Managers/PoiManager.h
diff --git a/homer_map_manager/src/Managers/RoiManager.cpp b/src/Managers/RoiManager.cpp
similarity index 100%
rename from homer_map_manager/src/Managers/RoiManager.cpp
rename to src/Managers/RoiManager.cpp
diff --git a/homer_map_manager/src/Managers/RoiManager.h b/src/Managers/RoiManager.h
similarity index 100%
rename from homer_map_manager/src/Managers/RoiManager.h
rename to src/Managers/RoiManager.h
diff --git a/homer_map_manager/src/MapIO/CMakeLists.txt b/src/MapIO/CMakeLists.txt
similarity index 100%
rename from homer_map_manager/src/MapIO/CMakeLists.txt
rename to src/MapIO/CMakeLists.txt
diff --git a/homer_map_manager/src/MapIO/image_loader.cpp b/src/MapIO/image_loader.cpp
similarity index 100%
rename from homer_map_manager/src/MapIO/image_loader.cpp
rename to src/MapIO/image_loader.cpp
diff --git a/homer_map_manager/src/MapIO/image_loader.h b/src/MapIO/image_loader.h
similarity index 100%
rename from homer_map_manager/src/MapIO/image_loader.h
rename to src/MapIO/image_loader.h
diff --git a/homer_map_manager/src/MapIO/map_loader.cpp b/src/MapIO/map_loader.cpp
similarity index 100%
rename from homer_map_manager/src/MapIO/map_loader.cpp
rename to src/MapIO/map_loader.cpp
diff --git a/homer_map_manager/src/MapIO/map_loader.h b/src/MapIO/map_loader.h
similarity index 100%
rename from homer_map_manager/src/MapIO/map_loader.h
rename to src/MapIO/map_loader.h
diff --git a/homer_map_manager/src/MapIO/map_saver.cpp b/src/MapIO/map_saver.cpp
similarity index 100%
rename from homer_map_manager/src/MapIO/map_saver.cpp
rename to src/MapIO/map_saver.cpp
diff --git a/homer_map_manager/src/MapIO/map_saver.h b/src/MapIO/map_saver.h
similarity index 100%
rename from homer_map_manager/src/MapIO/map_saver.h
rename to src/MapIO/map_saver.h
diff --git a/homer_map_manager/src/Workers/PointOfInterest/CMakeLists.txt b/src/Workers/PointOfInterest/CMakeLists.txt
similarity index 100%
rename from homer_map_manager/src/Workers/PointOfInterest/CMakeLists.txt
rename to src/Workers/PointOfInterest/CMakeLists.txt
diff --git a/homer_map_manager/src/Workers/PointOfInterest/PointOfInterest.h b/src/Workers/PointOfInterest/PointOfInterest.h
similarity index 100%
rename from homer_map_manager/src/Workers/PointOfInterest/PointOfInterest.h
rename to src/Workers/PointOfInterest/PointOfInterest.h
diff --git a/homer_map_manager/src/main.cpp b/src/main.cpp
similarity index 100%
rename from homer_map_manager/src/main.cpp
rename to src/main.cpp
diff --git a/homer_map_manager/src/map_manager_node.cpp b/src/map_manager_node.cpp
similarity index 100%
rename from homer_map_manager/src/map_manager_node.cpp
rename to src/map_manager_node.cpp
diff --git a/homer_map_manager/src/map_manager_node.h b/src/map_manager_node.h
similarity index 100%
rename from homer_map_manager/src/map_manager_node.h
rename to src/map_manager_node.h
-- 
GitLab