vicon2gt: Vicon-IMU fusion for groundtruth trajectory generation

This utility was created to generate groundtruth trajectories using a motion capture system (e.g. Vicon or OptiTrack) for use in evaluating visual-inertial estimation systems. Specifically we want to calculate the inertial IMU state (full 15 dof) at camera frequency rate and generate a groundtruth trajectory similar to those provided by the EurocMav datasets. Please take a look at the report for specific details and a more formal description. Link

OpenVINS: Platform for Visual-Inertial Navigation Research

The OpenVINS project houses some core computer vision code along with a state-of-the art filter-based visual-inertial estimator. The core filter is an Extended Kalman filter which fuses inertial information with sparse visual feature tracks. These visual feature tracks are fused leveraging the Multi-State Constraint Kalman Filter (MSCKF) sliding window formulation which allows for 3D features to update the state estimate without directly estimating the feature states in the filter. Inspired by graph-based optimization systems, the included filter has modularity allowing for convenient covariance management with a proper type-based state system. Please take a look at the feature list below for full details on what the system supports. Link

LiDAR-Inertial 3D Plane Simulator

This repository has a LiDAR-inertial 3D plane simulator in it that allows for custom trajectory through 3D environments to be created, and a sensor suite to be sent through it at a given rate. Does ray intersection with floorplan planes to simulate a LiDAR sensor moving through the environment. This was used in our LIPS paper to evaluate the system experimentally. I also have some quick start guides for people wanting to use it and those that want to simulate new enviroments/floorplans. Link

Pointgrey Ladybug ROS Driver

Nice small package that handles publishing of pointgrey ladybug images onto ROS. This was originally from the Autoware repository, but has been cleaned up and exposes a few more variables (framerate, exposure, gain) to the user. Link

Continuous Preintegration Source

This is the open sourcing of our continuous preintegration method so that others can leverage it. It includes the simulator used to compare agaist discrete integration and should be pretty easy to run. We use the GTSAM optimization framework and its fixlag smoother implementation which allows for realtime optimization in a sliding window fashion. The repository includes MATLAB scripts to generate the Monte-Carlo simulation, based on trajectories and groundtruth IMU readings from the GAZEBO simulator. Link

Reach RTK ROS Node

This is a driver that handles publishing of NMEA messages onto the ROS framework. Unlike other drivers, this one will also publish the uncertainty of the GNSS readings alongside the lat,lon,alt measurements. This was tested on the original Reach RTK device by Emlid, which has since replaced with the Reach M+ module. Link

Android ROS Sensor Driver

Main motivation was getting data off of a Google Tango Yellowstone tablet into ROS for dataset recording. This android app allows for connecting to an external ROS master that one can stream images, IMU, GPS, pressure, magnetometer, and temperature data to. This was a tough project since the OpenCV compiling on android is a a bit complex and not well documented, while working with android is always a handfull. You can check out the repository here. Link

Image Imu Record

This was a quick ROS node that allows for the recording of ROS image and imu messages to a flat file format to disk. This can be used to convert a ROS bag to individual images, and two data files containing the imu data and image stats. Very simple and easy to use helper node. This was created to allow for consistent offline running of both real time and non-real time algorithms. You can check out the repository here. Link

Bibtex Publication List

This was a modification of a great original portfolio site created by @vkaravir. It takes in a bibtex file or string and then creates a dynamic table and bar chart to visually illustrate the readings. I worked on updating, commenting, display formatting, and doing a general overhaul on the library. The large contribution was implementing a "reading group" function that allows for an additional due date field to be added to the bibtex entries and displayed in the online table. Link

Microstrain Communication Driver

This driver originally ran on the LCM framework. I worked on porting over the "pod" to the ROS catkin build system, along with the ROS event system. This was a really fun project to work on, as it was a lot of detective work to understand what the original author tried to code. Along with this, the amount of dependencies where minimized to allow for a more self contained package. Link

ORB SLAM Modification

As part of the university's undergraduate Summer Scholars program for the summer of 2015, I worked on a modification of the ORB Slam system. This modification was a multi-map approach with a goal of minimizing the loss of data. Through the collection of multiple maps, these smaller maps could be merged into a single large map, thus preventing a large loss of data. Can see the source code here Link