# Elias-tfm

-28th November to 12th December:

Added new module to estimate error statistics

Conversion of Rotation Matrix to Yaw-Pitch-Roll (Just on GUI data presentation)

Calculus of interpolation to minimum frequency

tests of data transformations grouped by sets of 3 transformations on each test

-15th November to 28th November:

Improving interpolation calculus by a given frequency

Checking modifications on datasets two by two

-1st November to 14th November:

Improving offset calculus.

Improving Interpolation calculus.

uploaded code to github https://github.com/JdeRobot/slam-TestBed/tree/master/Code/qt/helloQT4

-18th October to 31th October:
Working on testing and checking accuracy of estimated calculus

Added new estimating direction.

Previously , only estimating transformations from Dataset B to Dataset A

Now , is possible to estimate transformations from Dataset A to Dataset B

Found more reliable estimated calculus with transformations from Dataset A to DataSet B. To investigate

Added new video

-4th October to 18th October Working on estimating offset with interpolation Uploade code to github

-28th September to 4th October

Added estimation of time offset

Still working on adapting interpolation

Updated code on github

-26th to 28th September:

Added scale estimation

new video uploaded to youtube,( RobotSpirit channel)

-19th to 26 September:

Including the register module on the QT application.

The system is able to estimate wich rotation and traslation was performed over original data

New gui dialog showing parameters of estimated transformation such as scale, rotation and traslation

New View menu, to show 3d data as point or lines

New exit button added to file menu to close de application

Added new video on youtube

-1st to 19th September:
Creating new QT dialog for transforming data set. Including scale, traslation, rotation , gaussian noise and cosmic noise
Improving general features of qt 3d interface

-1st to 31th of August: Reading about c++ QT gui tool Implemeting some test with QT Created a very first version of gui for slamtestbed using QT Added a basic menu to perform traslation and scale modifications over 3D data sequence Uploaded new video

-31st to 6th of June: Continue writing the TFM paper.

Continue testing the code

Uploaded to Github the latest release of the code

-24th to 30th of May:
Writing part of the paper fo the TFM.

Starting to test the differents modules of SlamTestBed.

Correcting some bugs .

Repeating the tests.

-16th to 23th of May: Added new methods to the Sequence Transformer Module. Now it is possible to indicate the time initial offset and also frequency time steps. Added earlier first incomplete version of SLAMTestBed. Testing PcaModule and FindScale module together.

-7th to 15th of May:

Trying to calculate PCA using SVD. Finding out why the result is different than calculating PCA using covariance matriz.

Designing Index for the memory of the project

-1st to 6th of May:

Programmed a new Interpolation module. This module interpolate a set of data to a given frequency.

Dealing with the issue of comparing float numbers. Using integers numbers instead when comparing.

http://floating-point-gui.de/errors/comparison/

-1st to 2nd of April: Added new module for interpolate 2 data sets on 3D.

-27 to 31st of March:

Added new module for reducing data series to its principal components (PCA).

Working on first version of Interpolator module.

-20 March: Added a new module for time adjustment

-13 March:
Created c++ code to calculate Cross Correlation with 2 series
Following the algorithm found on url
[2]

-6 March:
Studying the problem of time sincronization between 2 differents data sets.
Developing c++ code to create 2 simple data sets. The second one have a time offset
Created python code to plot the 2 data sets

-21 February:
Reading Victor TFM , studying about sincronizing on the domain of time
Watching videos in youtube about linear, quadratic and cubic interpolation

- 8 to 13 February:

New method to calculate scale with 2 clouds of 3d points

using a pseudo Ransac method

- 31 January to 8 February:

Calculating scale for 2 clouds of 3d points with 2 other methods:

1- SVD, dividing singular values , so scale will be (s1/s1', s2/s2',s3/s3') where (s1,s2,s3) are the singular values calculated with SVD for a cloud of 3d points

2- Eigen Values of Covariance matrix, where scale will be (sqrt(e1/e1'), sqrt(e2/e2'),sqrt(e3,e3')), and (e1,e2,e3) are the eigen values for a cloud of 3d points

More info on this URL [3]

- 24 to 30 January 2018:

Reading about how to calculate PCA using SVD

Created C++ code using eigen library, trying to calculate PCA using SVD

-23 January 2018:

Reading about PCA applied in a cloud of 3d points

Added a method to find the scale of 2 clouds of 3D points. The same method that Victor suggested in his paper.

-20 January 2018:

Reading Victor's project, about how to calculate scale

-16 January 2018:

Adding Scale to transformation module

-13 and 14 January 2018:

Implementing SVD-Ransac, trying to create a new Registration Module that estimates Rotation and Traslation matrix applying SVD-RANSAC to the data with cosmic noise. Uploaded first version to github. Uploaded new video

-9 January 2018:

Implementing Ransac, trying to create a new Registration Module that estimates Rotation and Traslation matrix applying RANSAC (with Horn method) to the data .

Uploaded first version to github

-27 December:

Added cosmic noise to the Transformation module. In this way , we'll create the artificial data with cosmic noise. This will have great impact on the results of the Register module, because of this the estimation will be less accurate Here is a video, the red segments shows the big difference between the groundtruh and the estimated data.

-26 December:

Reading about one point Ransac , also reviewing Victor Arribas project.

-12 December:

Testing new register module in C++. This new module is usign Horn method with SVD. The code is based on the python code of evaluate_ate.py from TUM.

Also added new video to youtube.

This video presents 3 graphics. The first one, is the ground truth trajectory, drawn in black dots. Called Dataset A. The second one, in blue dots, shows an artificial trajectory after applying some rotation, traslation and gaussian noise over the ground truth data.Called DataSet B. The third one , in green dots , is the result of estimating rotation and traslation matrix (using DataSet A and B to calculate the estimation ) and applied again over DataSet B , trying to reverse the original rotation and traslation. Called DataSet C.

The red segments ,shows the error between black and green dots, or the error between DataSet A and DataSet C

-4 December:

Connecting every 3d point with a line

-2 December:
Drawing in red color the error between dots

Uploaded new video, using C++ Register module that is using SVD methor for fitting rotation and traslation matrix

This video presents 3 graphics. The first one, is the ground truth trajectory, drawn in black dots. Called Dataset A. The second one, in blue dots, shows an artificial trajectory after applying some rotation, traslation and gaussian noise over the ground truth data.Called DataSet B. The third one , in green dots (almost not visible) , is the result of estimating rotation and traslation matrix (using DataSet A and B to calculate the estimation ) and applied again over the ground truth dots. Called DataSet C.

The red segments ,shows the error between blue and green dots, or the error between DataSet B and DataSet C

-1 December:

Corrected minor errors on C++ code. Now the code is able to load matrix dinamically, no matter the size (limit 6000 3d points)

-30 November:

Finally, after dealing with Eigen C++ library , I managed to translate to C++ the python code based on SVD that calculates the rotation and traslation matrix for the Register Module

-29 November:

Uploaded to github Register module in C++. Still working on it. Change visual interface. Background set to white to distinguish much better every point

- 23 November:

Getting familiar with Eigen C++ library

- from 18 November to 22 November:

Testing method Horn to align two trajectories

Original Evaluate_ate.py could be downloaded from

Also reading Method Horn paper: https://ylatif.github.io/movingsensors/cameraReady/paper07.pdf

Created 2 more videos, on color white is presented ground truth trajectory , on blue is presented the artificial trajectory with gaussian noise, and finally on green is presented the align of second trajectory with the groundtruth trajectory.

- from 5 November to 17 November

Reading documentation about how to fit or calculate rotation matrix and traslation using two datasets, the original and the transformed dataset.

Found a method using SVD.

Testing and modifying code found at http://nghiaho.com/uploads/code/rigid_transform_3D.py_

Generate video with three trajectorys, the one in white color shows the original dataset or ground truth, the second in blue , shows the artificial dataset after being rotated , traslated and applied a gaussian noise, and the last one in green shows the ground thruth transformed by the estimated rotation matrix and estimated traslation vector. The centroids are represented by a tiny red dot.

-4 November 2017 Added Gaussian Noise into C++ program. Using Box-Muller transformation https://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform

New video, showing a curve with Gaussian noise

-01 November 2017

New video , transforming trajectory with rotations and tralations

-24-30 October 2017

Modeling the Transformator into a C++ class. Playing with transformator class.

-18-24 October 2017

Programming c++ to perform transformations on datafile of ground_truth positions. Rereading Victor Arribas Tesis

-16, 17 October 2017 Reading about quaternions and OpenGL

-14 , 15 October 2017 Reading x,y,z coordinates from a TUM file and drawing the 3D curve on screen.

-13 October 2017
Uploaded a video on youTube that draws 2 similar curves using Pangolin and OpenGl

-9 October 2017

Manage to draw a curve on screen

-6 to 8 october 2017

Reading about Pangolin

Looking for documentation

Looking at Eduardo graphic implementation of SDVL with Pangolin

Reading Pangolin Examples code

Learning how to compile Pangolin c++ code.

Reading OpenGL documentation

First steps coding with Pangolin.

Manage to draw a grid on screen.

Dealing with OpenGL flickering

-3 october 2017

Create a small python script to create a new output file based on small modifications on the groundTruth file.

Testing the TUM tools to estimate error .

Document explaining tests performed is uploaded on github here [4].

Python code uploaded here [5].

TUM groundTruth data file is uploaded here [6]

New data file based on groundTruth file uploaded here [7]

-1,2 october 2017

Reading and testing TUM python code tools to evaluate the SLAM/tracking results at [8]

Python code could be downloaded from here [9].

Using as input data [10]

-1 to 27 september 2017
Reading Eduardo Perdices PHD paper
Reading Victor Arribas Master paper
Taking a look to SDVL code

-27 august 2017

testing TUM image sets with SDVL :

Freiburg1 Floor

Freiburg2 Desk

Freiburg2 360 Kidnap

Freiburg3 Walking Static (F3W)

-26 august 2017

testing jderobot tools :

cameraServer

cameraCalibrator

cameraView

-15 to 25 august 2017

looking at SDVL code

trying cameraCalibrator component from jderobot

- 1 to 15 august 2017

reading Eduardo Perdices PHD paper

reading Victor Arribas Master paper

- july 2017

Installing SDVL on linux ubuntu 16.04 Testing SDVL

-22 jun 2017

uploaded new version, with new Latex document definition

-20 jun 2017
uploaded new version with corrections and modifications

https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia/blob/master/memoria3.1.pdf

- from 17 to 19 of jun 2017

Applied corrections and modifications suggested by Eduardo

Applied corrections and modifications suggested by JoseMaria

Deleted Figure Index

Created table for comparing Visual Slam algorithms, like the one of Eduardo, but added DSO algorithm

uploaded to github https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia/blob/master/memoria3.0.pdf

-15 jun 2017.
Orthography review,

content review

uploaded memoria.2.9.pdf to github

https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia/blob/master/memoria_2.9.pdf

-13 jun 2017.
uploaded memoria2.6.pdf to github
New document structure, without chapters
https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia/blob/master/memoria2.6.pdf

-7 jun 2017.
uploaded memoria2.5pdf on github

https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia/blob/master/memoria2.5.pdf

Fixed some paragraphs of the text.

Added more references to the whole document.

Added more info about issues with Visual SLAM, main components of a Visual SLAM algorithm.

Added description for SDVL and RGBD Visual SLAM algorithms,

read some texts like

https://ipsjcva.springeropen.com/articles/10.1186/s41074-017-0027-2

-1 jun 2017.

uploaded memoria2.0pdf on github

https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia/blob/master/memoria2.pdf

Writting about sparse/dense direct and indirect vslam methods. More info and pictures for Tango Project an Pix4D. New conclusion

-30 may 2017

uploaded memoria1.5.pdf on github There are new pictures on the VisualSlam algorithms

-29 may 2017
Making some corrections an updates on the text

-From 17 to 26 of may 2017

Uploaded a new pdf document on repository https://github.com/RoboticsURJC-students/2017-tfm-elias-barcia

-from 8 to 16 of may 2017

Read papers from Eduardo, Alex and Victor

Created github repository

https://github.com/RobotSpirit/Investigacion_VisualSLAM

Starting from scratch with LaTex

Uploaded first version of paper, on pdf format