Efficient local and global exploration on submap collections with changing past pose estimates.
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).
Credits
Setup
Examples
If you find this package useful for your research, please consider citing our paper:
@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:
@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:
@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},
}
For a short overview of the system check out our video on youtube:
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:
wstool init . ./glocal_exploration/glocal_ssh.rosinstall # SSH
wstool init . ./glocal_exploration/glocal_https.rosinstall # HTTPS
wstool update
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
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:
Worlds/Maze_AirSim/Binary
.Worlds/Maze_AirSim/Editor
.To make other UE4 projects compatible with the unreal_airsim simulator,
path/to/AirSim/Unreal/Environments/Blocks
to path/to/MyUE4Project
(after the plugin was compiled).Related resources, such as experiment scenarios, can be downloaded from here.
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:
Maze_AirSim/Binary/LinuxNoEditor/Engine/Binaries/Linux/UE4Game-Linux-Shipping
and tab out of game control (Alt+Tab).Maze_AirSim/Editor/Maze.uproject
,click play in editor (Alt+P), and tab out of game control (Shift+F1).Start the simulator and planner:
roslaunch glocal_exploration_ros run_glocal.launch
An RVIZ window should show up visualizing GLocal at work: