Install | |
▼Using Nuklei | This group contains documentation useful for working with Nuklei (as opposed to contributing to Nuklei) |
Background | Nuklei was initially designed to model density functions defined on the Special Euclidean group \( SE(3) \) (or on a subspace thereof). This page reviews the theory behind density estimation and density integrals particularized to \( SE(3) \) data. This is the place to start if you haven't yet heard of nonparametric representations, quaternions, or von Mises-Fisher distributions. Once you feel comfortable with the material presented here (feel free to explore the references given below!), move on to Kernels, kernel density estimation, kernel regression, which explains which concepts Nuklei implements, and how they are implemented. Keep in mind that the Nuklei implementation doesn't strictly follow the text presented on this page. For instance, in the text below, 3D positions are modeled with Gaussian distributions. Nuklei, on the other hand, offers both Gaussian and triangular kernels for modeling positions, and triangular kernels are used by default in kernel density estimation and kernel logistic regression |
Kernels, kernel density estimation, kernel regression | This page presents the kernel density estimation (KDE) and kernel logistic regression (KLR) tools provided by Nuklei |
Generic Kernels | This page presents a set of generic kernel classes provided by Nuklei. The KDE and KLR-related kernels (e.g., kernel::se3, see Kernels, kernel density estimation, kernel regression) rely on the generic kernels presented here |
Operations on Poses | This page introduces vocabulary for referring to operations on \( SE(3) \) poses |
F.A.Q. | |
▼Coding Details | |
Programming Paradigms and Semantics | Nuklei's code follows two distinct programming paradigms. Parts of Nuklei are written in generic C++, while other parts are written in object-oriented/polymorphic C++. Generic code (i.e., templates) is flexible and fast (static binding, allows for inlining). Unfortunately, generic code can quickly become obscure. Generic programming also restricts the range of programmers who will be comfortable with the code |
Type Queries | Functions defined in Types.h facilitate the (de)serialization of enum labels, here refered to as types. This is useful, e.g., when reading/writing the type of an object to a file |
Configuration | The behavior of the functions implemented in Nuklei can be altered through environment variables: |
▼Contributing to Nuklei | This group contains documentation useful for contributing to Nuklei |
Code Organization | Nuklei is organized in the following directories: |
Coding Guidelines | Please read the following sections carefully before committing new code to the repository |
Acknowledgements | Nuklei relies on the following libraries: |