Technische Fakultät
AG Technische Informatik

Prof. Dr.-Ing. Ralf Möller - Software: T-SIMD and WarpingSIMD

Low-level C++ Template SIMD Library and SIMD Implementation of MinWarping

T-SIMD is a low-level C++ template SIMD library which wraps built-in vector data types and built-in vector intrincics in template classes and template functions or overloaded functions, respectively. Templates parameters are the element data type of the vectors and the vector width in bytes (e.g. 16 for SSE* and NEON, 32 for AVX/AVX2). This makes it possible to flexibly change the data type and the vector instruction set for entire portions of the code. Moreover, many implementation details at the intrinsics level are hidden by T-SIMD. SSE*, AVX/AVX2, AVX-512, and ARM NEON vector instruction sets are currently supported. In addition, higher-level functions like transposition are provided.

WarpingSIMD is an implementation of the MinWarping method and the 2D-Warping method of local visual homing based on the T-SIMD library. MinWarping and 2D-Warping take two panoramic images captured at different positions in the plane and compute an estimate of the vector pointing from one capture point to the other (home vector) and an estimate of the azimuthal orientation difference (compass angle). These methods can be used for local visual homing of mobile robots or for trajectory SLAM. The code also contains later extensions to MinWarping like a method for tilt compensation.

The software has so far only been tested under Linux with the g++ (regularly), and with the icc and clang++ compilers (occasionally).


Software Download

Note: This software and the panoramic image databases are distributed based on a license agreement (see the file LICENSE or LICENSE.doc, also contained in the tar and zip archives).

Two tar and zip archives are provided: T-SIMD and WarpingSIMD together in one archive and T-SIMD only. Panoramic image databases are provided in separate archives as test data for MinWarping.

Download the tar or zip archives below. Follow the installation guide INSTALL (also contained in the code tar and zip archives).

Code tar archive (T-SIMD and WarpingSIMD):
WarpingSIMDStandAloneCode26_231112.tgz

Code zip archive (T-SIMD and WarpingSIMD):
WarpingSIMDStandAloneCode26_231112.zip

Code tar archive (T-SIMD only):
TSimdStandAloneCode26_231112.tgz

Code zip archive (T-SIMD only):
TSimdStandAloneCode26_231112.zip

Code directory of the most recent version (T-SIMD and WarpingSIMD):
CODE26/

Single-header file of T-SIMD library for the most recent version:
CODE26/tsimd_sh.H
It may be advisable to store the file in the specified directory, since currently the version is not mentioned in the single-header file. The single-header file can also be generated by make single-header.


Changes

Major changed in Code26: Support for double element data type.

Major changes in Code25: Bug fixes and improvements. Bitwise operations now start with prefix bit_ (e.g. bit_and). Added functions ktest_all_zeros, ktest_all_ones, kcmpeq. Restructuring (including renaming) of transpose, swizzle, and bitonic-sort functions. Added automatically generated in-place transpose functions. Added iterative horizontal accumulation. New autotest script. Automatic test for load and store functions.

Major changes in Code24: Further restructuring of T-SIMD library by J. Keller. Masked instructions are now fully integrated. A single-header version is now available. A documentation of T-SIMD library was added.

Major changes in Code23: Comprehensive overhaul of entire T-SIMD code by J. Keller. Auto-test for masked operations is now available.

Major changes in Code22: Should now also compile with g++ or clang++ under Windows. Extension of MinWarping to tilt tolerance add by C. Berganski.

Major changes in Code19: Support for masked operations added by Markus Vieth (not integrated into auto-test yet, separate documentation in README.SIMDMask). Standalone implementation of SIMD MSB Radix Sort. Several contributions to Warping implementation.


Documentation of T-SIMD library

The documentation of the most recent version is available under this link and in the tar and zip archives. It can also be generated by make doc.


Database Download

Database mini tar archive
180731: only living databases, width 288 and 384, filter cutoff 0.10/0.20, sufficient for test code
WarpingSIMDStandAloneData2Mini_180731.tgz

Database full tar archive
living and grid databases, different sizes / filter cutoffs; virtual databases
180505: living databases in width 288/576/1152 now with larger cutoffs
180605: grid databases in slightly different form and more cutoffs
virtual (rendered) single-room databases 4wall_1 and lab_quarterres with random patterns / photos on walls
180731: width 384 added for living and grid databases
WarpingSIMDStandAloneData2_180731.tgz


Software Reports

The following reports describe the implementation of the T-SIMD library and of the MinWarping method. Note that these documents are currently somewhat outdated, but they may still be useful to understand the overall approach.

Design of a low-level C++ template SIMD library
R. Möller
2016
[BibTeX] [CoverSheet] [templateSIMD.pdf, 143 kB]

A SIMD Implementation of the MinWarping Method for Local Visual Homing
R. Möller
2016
[BibTeX] [CoverSheet] [warpingSIMD.pdf, 528 kB]


Papers on Warping Methods

The following papers and reports (reports may be updated from time to time) describe the 2D-Warping method, the MinWarping method, and distance measures to improve the illumination tolerance of MinWarping.

Local Visual Homing by Warping of Two-Dimensional Images
R. Möller
Robotics and Autonomous Systems, 57 (1), 2009, pp. 87-101
Author Posting. © Elsevier, 2009.
doi:10.1016/j.robot.2008.02.001

[BibTeX] [CoverSheet] [warping2D.pdf, 866 kB]

Three 2D-Warping Schemes for Visual Robot Navigation
R. Möller, M. Krzykawski, & L. Gerstmayr
Autonomous Robots, 29 (3), 2010, pp. 253-291
This article is featured in the Autonomous Robots Blog. You may leave comments there.
© Springer. The original publication is available at wwww.springerlink.com.
DOI: 10.1007/s10514-010-9195-y.

[BibTeX] [CoverSheet] [warping2D_ext.pdf, 1808 kB]

Illumination Tolerance for Visual Navigation with the Holistic Min-Warping Method
R. Möller, M. Horst, & D. Fleer
Robotics, 3 (1), 2014, pp. 22-67
ISSN: 2218-6581
doi: 10.3390/robotics3010022
[BibTeX] [CoverSheet] [Download from MDPI]

Column Distance Measures and their Effect on Illumination Tolerance in MinWarping
R. Möller
2016
[BibTeX] [CoverSheet] [distMeasures2.pdf, 258 kB]

Tilt Correction of Panoramic Images for a Holistic Visual Homing Method with Planar-Motion Assumption
C. Berganski, A. Hoffmann, & R. Möller
Robotics, 12 (20), 2023
ISSN: 2218-6581
[BibTeX] [CoverSheet]
[Download from MDPI]


Warping on Different Parallel Hardware Architectures

Comparing parallel hardware architectures for visually guided robot navigation
W. Schenck, M. Horst, T. Tiedemann, S. Gaulik, & R. Möller
Concurrency and Computation: Practice and Experience, 29 (4), 2017, p. e3833
ISSN: 1532-0634
doi: 10.1002/cpe.3833
[BibTeX] [CoverSheet] [pha_warping_preprint.pdf, 1674 kB]


Comparison of MinWarping with Feature-based Methods

Comparing holistic and feature-based visual methods for estimating the relative pose of mobile robots
D. Fleer & R. Möller
Robotics and Autonomous Systems, 89, 2017, pp. 51 - 74
ISSN: 0921-8890
Author Posting. © Elsevier, 2017.
doi: 10.1016/j.robot.2016.12.001

[BibTeX] [CoverSheet] [dfleer-features-holistic.pdf, 5518 kB]


Visual Place Recognition

Visual Place Recognition for Autonomous Mobile Robots
M. Horst & R. Möller
Robotics, 6 (2), 2017, p. 9
ISSN: 2218-6581
doi: 10.3390/robotics6020009
[BibTeX] [CoverSheet]
[Download from MDPI]


SIMD Processing

Bitwise MSB Radix Sort on AVX-512
R. Möller
2021
Bielefeld University, Faculty of Technology, Computer Engineering Group
[BibTeX] [CoverSheet] [simdRadixSort.pdf, 1125 kB]


Video

This video gives an introduction into insect-inspired visual homing methods with special emphasis on MinWarping.

Application of Insect-Inspired Visual Homing Methods for Cleaning Robot Navigation; Part 1: Insect-Inspired Visual Homing - Video Presentation
R. Möller
2014
[BibTeX] [CoverSheet] [Video]


Software Author and Contributors

T-SIMD and WarpingSIMD were originally written by Ralf Möller, moeller@ti.uni.... Jonas Keller substantially improved and extended the T-SIMD library and added the documentation. Christoph Berganski, Annika Hoffmann, and Benedikt Volkmer contributed code to WarpingSIMD. Markus Vieth, Adam Marschall, Jan-Lukas Wolf, Lukas Schiermeier, and Moritz Breipohl contributed code to T-SIMD. Their specific contributions are mentioned in the source files. Thanks a lot to all contributors!

Please report bugs to moeller@ti.uni...

The living image databases were collected by Sven Kreft and Sebastian Ruwisch.
The grid image databases were collected by David Fleer and Michael Horst (see Fleer and Möller, Rob. Auton. Sys. 89, 2017).