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).
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.
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.
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 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
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] |
|
R. Möller 2016 [BibTeX] [CoverSheet] [warpingSIMD.pdf, 528 kB] |
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] |
|
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] |
|
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] |
|
R. Möller 2016 [BibTeX] [CoverSheet] [distMeasures2.pdf, 258 kB] |
|
C. Berganski, A. Hoffmann, & R. Möller Robotics, 12 (20), 2023 ISSN: 2218-6581 [BibTeX] [CoverSheet] [Download from MDPI] |
|
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] |
|
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] |
|
M. Horst & R. Möller Robotics, 6 (2), 2017, p. 9 ISSN: 2218-6581 doi: 10.3390/robotics6020009 [BibTeX] [CoverSheet] [Download from MDPI] |
|
R. Möller 2021 Bielefeld University, Faculty of Technology, Computer Engineering Group [BibTeX] [CoverSheet] [simdRadixSort.pdf, 1125 kB] |
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] |
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).