glocal_exploration
GLocal is a modular system for efficient Global and Local exploration planning and mapping in large scale environments, accounting for past pose corrections due to state estimation drift. In a submap-based approach, multiple layers of both mapping and planning are combined to achieve robustness to drift while maintaining efficiency in large scale environments.
Different modules of GLocal (left) and GLocal in action for large scale exploration subject to odometry drift (right).
Table of Contents
Credits
Setup
Examples
Papers
If you find this package useful for your research, please consider citing our paper:
- Lukas Schmid, Victor Reijgwart, Lionel Ott, Juan Nieto, Roland Siegwart, and Cesar Cadena, "A Unified Approach for Autonomous Volumetric Exploration of Large Scale Environments under Severe Odometry Drift", in IEEE Robotics and Automation Letters, vol. 6, no. 3, pp. 4504-4511, July 2021 [IEEE | ArXiv | Video]
@ARTICLE{schmid2021glocal, author={L. {Schmid} and V. {Reijgwart} and L. {Ott} and J. {Nieto} and R. {Siegwart} and C. {Cadena}}, journal={IEEE Robotics and Automation Letters}, title={A Unified Approach for Autonomous Volumetric Exploration of Large Scale Environments under Severe Odometry Drift}, year={2021}, volume={6}, number={3}, pages={4504-4511}, doi={10.1109/LRA.2021.3068954}, month={July}, }
The local exploration planner is largely based on mav_active_3d_planning:
- Lukas Schmid, Michael Pantic, Raghav Khanna, Lionel Ott, Roland Siegwart, and Juan Nieto, "An Efficient Sampling-based Method for Online Informative Path Planning in Unknown Environments", in IEEE Robotics and Automation Letters, vol. 5, no. 2, pp. 1500-1507, April 2020 [IEEE | ArXiv | Video]
@ARTICLE{schmid2020activeplanning, author={L. {Schmid} and M. {Pantic} and R. {Khanna} and L. {Ott} and R. {Siegwart} and J. {Nieto}}, journal={IEEE Robotics and Automation Letters}, title={An Efficient Sampling-Based Method for Online Informative Path Planning in Unknown Environments}, year={2020}, volume={5}, number={2}, pages={1500-1507}, doi={10.1109/LRA.2020.2969191}, month={April}, }
The global mapping is largely based on voxgraph:
- Victor Reijgwart, Alexander Millane, Helen Oleynikova, Roland Siegwart, Cesar Cadena and Juan Nieto, "Voxgraph: Globally Consistent, Volumetric Mapping Using Signed Distance Function Submaps" in IEEE Robotics and Automation Letters, vol. 5, no. 1, pp. 227-234, January 2020 [IEEE | ArXiv | Video]
@ARTICLE{reijgwart2020voxgraph, author={V. {Reijgwart} and A. {Millane} and H. {Oleynikova} and R. {Siegwart} and C. {Cadena} and J. {Nieto}}, journal={IEEE Robotics and Automation Letters}, title={Voxgraph: Globally Consistent, Volumetric Mapping Using Signed Distance Function Submaps}, year={2020}, volume={5}, number={1}, pages={227-234}, doi={10.1109/LRA.2019.2953859}, month={January}, }
Video
For a short overview of the system check out our video on youtube:
Installation
Installation instructions for Linux.
Prerequisites
-
If not already done so, install ROS (Desktop-Full is recommended).
-
If not already done so, create a catkin workspace with catkin tools:
# Create a new workspace sudo apt-get install python-catkin-tools mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init catkin config --extend /opt/ros/$ROS_DISTRO catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release catkin config --merge-devel
Installation
-
Move to your catkin workspace:
cd ~/catkin_ws/src
-
Download repo using a SSH key or via HTTPS:
git clone [email protected]:ethz-asl/glocal_exploration.git # SSH git clone https://github.com/ethz-asl/glocal_exploration.git # HTTPS
-
Install system dependencies:
sudo apt-get install python-wstool python-catkin-tools
-
Download and install package dependencies using SSH or HTTPS ros install:
- If you created a new workspace.
wstool init . ./glocal_exploration/glocal_ssh.rosinstall # SSH wstool init . ./glocal_exploration/glocal_https.rosinstall # HTTPS wstool update
- If you use an existing workspace. Notice that some dependencies require specific branches that will be checked out.
wstool merge -t . ./glocal_exploration/glocal_ssh.rosinstall # SSH wstool merge -t . ./glocal_exploration/glocal_https.rosinstall # HTTPS wstool update
-
Compile and source:
catkin build glocal_exploration_ros source ../devel/setup.bash
Simulation Setup
This step installs the simulation framework based on Unreal Engine (UE4) and AirSim used in the example. Notice that GLocal can be run with any other simulator or physical robot. If you intend to use another simulation framework the simulation setup can be skipped.
-
The demo can be run using a binary or using the UE4 editor:
-
If you want to run the binary step 1 can be skipped.
(Recommended if you just want to run the demo.)
-
If you want to use the editor, follow the steps described here to install Unreal Engine.
(Recommended if you wish to modify or create simulation worlds.)
Note: We are aware of the binary not running on certain systems due to graphics drivers issues. We recommend using the editor in this case.
-
-
Install AirSim and the unreal_airsim simulator by following these instructions.
-
Setup the simulator config by running:
roslaunch unreal_airsim parse_config_to_airsim.launch
Note: This step needs to be repeated once the simulator config was changed, e.g. after using AirSim for another project or changing the desired setup in
config/experiments/general/airsim.yaml
. -
Download the maze scenario from the data repository:
- Binary: download the directory
Worlds/Maze_AirSim/Binary
. - Editor: download the directory
Worlds/Maze_AirSim/Editor
.
- Binary: download the directory
Optional: Using custom worlds with AirSim
To make other UE4 projects compatible with the unreal_airsim simulator,
- Copy the folder 'Plugins' from
path/to/AirSim/Unreal/Environments/Blocks
topath/to/MyUE4Project
(after the plugin was compiled). - In the UE4 Editor open your project and set the game mode to 'AirSimGameMode'.
Data Repository
Related resources, such as experiment scenarios, can be downloaded from here.
Examples
Exploring the Maze
This demo utilizes the unreal_airsim simulator. If not already done so, follow the steps in Simulation Setup to install the simulator.
-
Start the UE4 simulation:
- Binary: Execute
Maze_AirSim/Binary/LinuxNoEditor/Engine/Binaries/Linux/UE4Game-Linux-Shipping
and tab out of game control (Alt+Tab). - Editor: Open
Maze_AirSim/Editor/Maze.uproject
,click play in editor (Alt+P), and tab out of game control (Shift+F1).
- Binary: Execute
-
Start the simulator and planner:
roslaunch glocal_exploration_ros run_glocal.launch