ETH Zurich Autonomous Systems Lab

Github page for the Autonomous Systems Lab, containing info and documentation about our open source projects.

View My GitHub Profile

About the Autonomous Systems Lab

The Autonomous Systems Lab is part of the Mechanical Engineering department at ETH Zurich, under Prof. Roland Siegwart.

The main focus of the lab is autonomous robotic systems, including hardware, state estimation, perception, and planning. A small subset of the software packages we've made available open-source are listed and described here.

Open-Source Projects

These projects are divided by general area. Note that not all of these are appropriate for every robot or application, please read each package's individual documentation.

State Estimation

rovio -- Robust Visual Inertial Odometry framework, estimating the pose of a robot based on synchronized IMU and monocular or stereo camera input. EKF-based.

okvis_ros, okvis -- docs_ros, docs -- Open Keyframe-based Visual-Inertial SLAM, bundle-adjustment based, estimating the pose of a robot based on synchronized IMU and monocular or stereo camera input.

ethzasl_msf -- Multi-sensor fusion, allowing fusing multiple sensors estimating a robots' pose together, such as multiple IMUs, IMU and camera pose estimates, external position tracking estimates, etc. Compensates for sensor delays.


libpointmatcher -- A library implementing various ICP (Iterative Closest Point) algorithms for laser and other scan matching in 3D. A ROS wrapper is available at ethzasl_icp_mapping.

volumetric_mapping -- Wrapper around Octomap, allowing input from various data sources (such as disparity maps) and a more flexible sensor position interface. grid_map -- 2.5 D grid-based mapping with multiple layers for robot navigation.

elevation_mapping -- Local elevation mapping, expressed in a robot-centric frame for navigation, especially for walking robots.


kalibr -- Camera and IMU calibration toolbox.


StructuralInspectionPlanner -- Toolbox for planning paths for a flying robot to inspect a structure for which a mesh representation is known.


rotors_simulator -- Gazebo-based simulator for multirotor helicopters and quadrotors. Provides physical models, sensor models, octomap generation from Gazebo world, and realistic aerodynamics simulation.


minkindr -- Lightweight, simple transformation library, handling Quaternion-based transformations. Conversions to/from ROS are available as part of the minkindr_ros package.

Hardware Interfaces/Drivers

visensor_node, libvisensor -- Drivers for the VI Sensor, a sensor with a stereo head synchronized to an IMU.