Firefly Eindhoven - Localization - Verax
Working principle
1) Hardware system: LEDs, fisheye camera, jetson, find LEDs 2) Describe general PnP problem: locate camera with n camera points
3) Introduction to the OPnP algorithm and general steps, including step to Groebner basis solver
Implementation
Since a regular implementation on either the GPU or CPU of the MATLAB code by making use of MATLAB's embedded C/GPU coder does not meet the performance requirements, the software has to be ported to a lower level language that makes use of GPU accelerated libraries to fully utilize the Jetsons hardware. Since Rogier lacked the expertise to port the code and did not have time to fully look into this, Daan and Johan were tasked with porting the MATLAB code and achieve an update rate of approximately 30 Hz.
Linear algebra
The automatically generated OPnP algorithm (thus an implementation of the Groebner basis solver) has two main function calls that limit its performance:
- The solving of a linear system [math]\displaystyle{ Ax = b }[/math] with dimensions of A (
Parts that are required for the Groebner basis solver: matrix inversion/solving linear system and eigenvector solver
Software
1) GPU coder 2) C coder 3) Armadillo (C++ with Lapack) 4) CUSolve for solving the linear system 5) Paper with CUDA pseudocode 6) MAGMA