Source Code


 

uLAPACK: Linear Algebra Package for uBLAS

This collection of C++ templates wraps the FORTRAN or C interfaces for LAPACK so that they integrate with the Boost uBLAS library. Currently (April 2005) implements Cholesky decomposition, LU decomposition, inversion and determinant for general and positive-definite matrices.

Download uLAPACK

Mex Object Handle

This MatLab utility allows you to create a C++ object within a mex-file and to pass a handle to this object back to MatLab. Thus, you can pass C++ objects between different MEX functions without first converting to a MatLab compatible format.

Download object handle utility

C++ Interface Class

This C++ code is intended to be a tutorial. It is an extension of the idea presented in Item 42 of Scott Meyer's "Effective C++", 2nd Edition. In his discussion he creates a generic stack class to contain pointers-to-objects. His class is written with a void* based implementation, and a template-based interface. The chief aim of restricting templates to interface classes is to reduce "code bloat", which is the replication of template code for each instantiated type. Bloat increases the overall size of the object code.

In my demo, I extend the interface-class idea to create a generic stack class to contain objects (ie, not just pointers to objects). This demo also provides a nice example of using "placement new" and explicit destruction.

Download interface class demo

Scan matching

This is a set of simple implementations for aligning scans of range-bearing laser data. They are written as demonstrations of basic algorithm implementations and are not designed for real-world (ie, efficient) application. The source code consists of MatLab scripts, mex-files and C++ code.

There are three basic operations provided. The first is scan alignment, which is implemented via two versions of Iterate Closest Point (ICP) and two versions of Sum of Gaussians (SoG) algorithms. The second is to compute the variance of a scan alignment. Two algorithms are implemented for this -- SVD fitting and importance sampling -- but presently neither is very reliable. Finally, the third operation is to constrain a set of pair-wise scan alignments to produce a least-squares optimal map of scan poses.

Download scan matching code



[Tim's Homepage]