This is an open-source and research-oriented C++ library for solving the SLAM problem on planetary rovers that
aim to navigate and explore extreme terrains. It adopts a globally adaptive technique which uses an a priori global
low-resolution map provided by orbital imagery to enhance the robot's perception and correct its global position.
Created by: Dimitris Geromichalos (geromidg@gmail.com)
Supervised by: Martin Azkarate (martin.azkarate@esa.int)
Developed at: Planetary Robotics Lab (PRL), European Space Agency (ESA)
- 🌄 Suitable for rough terrain navigation by utilizing 2.5D (elevation) maps
- 🌐 Global pose correction using map matching of local (robot-centric) and global (orbiter) elevation maps
- 📷 Sensor-agnostic data registration using point clouds (support for lidar, stereo camera, ToF camera etc.)
- 💥 Automatic sensor fusion when multiple inputs are provided (without prior configuration)
- 📃 Easily tunable parameter set to fit the needs of different robots and applications
The high-level design diagram shows the main modules that comprise the system.
Although the library can be used on other systems, it was validated using:
- Ubuntu 16.04 (Xenial)
- CMake 3.5.1
- GCC 5.4.0
Required packages:
- Eigen 3 (linear algebra calculations)
- PCL 1.7 (point cloud processing)
- OpenCV 2.4 (image processing)
- Grid Map Core (map structure and calculations)
Optional packages:
- Google Mock (testing)
The dependecies listed above can be installed using this script as well.
To build the library, run:
git clone https://github.com/geromidg/GA_SLAM.git
cd ga_slam
mkdir build && cd build
cmake ..
make
To build and execute the tests, run:
cmake -DENABLE_TESTS=ON ..
make
make test
Make sure to set CMAKE_PREFIX_PATH if you installed the grid_map_core library from the debian package.
For example if you installed it using sudo apt-get install ros-kinetic-grid-map-core
, run:
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/opt/ros/kinetic