This page is under construction.
The gokart is a mobile robot that has been in operation at the Innovationpark in Dübendorf/Switzerland since December 2017. Autonomous driving started as pure pursuit of a predefined track on day four. The first demonstration of autonomous driving to the general public was conducted three months into the project. Motion planning around changing obstacles was implemented after six months. Autonomous lap racing faster than human driving was achieved 16 months into operation. The software architecture has the following non-standard characteristics:
The choice of tools permits development on all major operating systems, and results in an amortized compile time of below 1[s].
The source code comprises of 110k lines of code from over 5000 source files that contribute to the operation of the gokart. The functionality is distributed over six libraries, which are ordered from general to specific:
tensor is a library for linear algebra and tensor computations. The implementation defines a tensor recursively as either a list of tensors, or a scalar. Scalar encoding is in exact or numeric precision. All algorithms support the use of quantities. Features include probability distributions for random variate generation, kernel functions, and spectral analysis. The API is inspired by Wolfram's Mathematica.
sophus is a library for computational geometry on manifolds and Lie-groups. Functionality includes the smoothing of sequences of noisy measurements, the generation of smooth curves from control points, and the interpolation of data from non-linear spaces. Geodesic averages and biinvariant means substitute affine combinations in traditional algorithms for linear data. The non-linear operations are relevant for car-like mobile robots, and drones.
subare implements the iterative methods that are detailed in the book on reinforcement learning by Sutton and Barto. Algorithms include action-value iteration, q-learning, true-online sarsa, prioritized sweeping, monte carlo with exploring starts, etc. The methods have contributed to the development of simple control strategies for robots in simulation.
owl is a library for motion planning, simulation, and visualization. The two planning methods, generalized labeling correction, and rapidly exploring random trees, as well as a collection of state space models, obstacle regions, cost functions, and spherical and conic goal regions with efficient heuristics are readily available. Shadow regions, and preference structures for multi-objective optimization have been incorporated as novel concepts in motion planning.
retina reads out various sensing devices including lidars, event-based cameras, inertial measurement units, and GPS. Data processing as part of the perception pipeline are visual features tracking, event-based simultaneous localization and mapping, and clustering of lidar points.
gokart contains interfaces to the actuators of the gokart, lidar-based localization and state estimation, modules for hardware preservation and safety embedded in the hierarchical driving logic. Power steering, and anti-lock braking facilitate manual driving. Obstacle mapping, and track boundary parameterization are used in motion planning. The autonomous modes are pure pursuit, clothoid pursuit, and model predictive contouring control.
The students Noah Isaak, Richard von Moos, Jonas Londschien, Yannik Nager, Mario Gini, Valentina Cavinato, Christian Fluri, Marc Heim, André Stoll, Oliver Brinkmann, Michael von Büren, Joel Gächter, Antonia Moosberger, and Maximilien Picquet have contributed to the development during their thesis projects at the Frazzoli group at the Institute for Dynamic Systems and Control of the ETH Zürich. Thank you!
The repositories can be downloaded from idsc-frazzoli/github.
Example is not the main thing in influencing others.
It is the only thing.
The work on the go-kart project has inspired several new methods and investigations for the processing of Lie group-valued data.
|Curve Subdivision in SE(2)||webpage||link|
|Smoothing using Geodesic Averages||webpage||link|
|Curve Decimation in SE(2) and SE(3) (on viXra.org)||viXra:1909.0174||link|
|Application of Hermite Subdivision to SE(2)||20191026_her...pdf||link|
Learn as much mathematics as you can, particularly applied math. The areas of mathematics we use most heavily today are Euclidean and affine geometry, trigonometry, linear algebra, calculus and numerical analysis. We don't really know what the mathematical tools of tomorrow might be, so we're counting on the next generation of employees to tell us.