Skip to content

Commit

Permalink
Updated to IV 2019 Version
Browse files Browse the repository at this point in the history
  • Loading branch information
tipf authored Jun 18, 2019
1 parent ec3eb6a commit c86e11a
Show file tree
Hide file tree
Showing 24 changed files with 964 additions and 161 deletions.
48 changes: 46 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Main features are:
This work is released under the GNU General Public License version 3.

### Citation
This library is the implementation of the following paper [1]. Further references will be added with additional content.
This library is the implementation of [1] and [2]. Further references will be added with additional content.

[1] Tim Pfeifer and Peter Protzel, Expectation-Maximization for Adaptive Mixture Models in Graph Optimization, Proc. of Intl. Conf. on Robotics and Automation (ICRA), 2019

Expand All @@ -26,6 +26,17 @@ BibTeX:
year = {2019},
}

[2] Tim Pfeifer and Peter Protzel, Incrementally learned Mixture Models for GNSS Localization, Proc. of Intelligent Vehicles Symposium (IV), 2019

BibTeX:

@InProceedings{Pfeifer2019a,
author = {Tim Pfeifer and Peter Protzel},
title = {Incrementally learned Mixture Models for GNSS Localization},
booktitle = {Proc. of Intelligent Vehicles Symposium (IV)},
year = {2019},
}

## Installation

The libRSF is a CMake project that requires the installation of the following dependencies:
Expand Down Expand Up @@ -64,7 +75,7 @@ After building the library, some applications are provided. Usually they corresp

#### ICRA 2019
These two applications are made for the ICRA 2019 conference, the corresponding paper is [1].
One can be used for GNSS datasets and calculated a 3D position in the ECEF frame, while the other one is for the 2D UWB ranging dataset.
One can be used for GNSS datasets and calculates a 3D position in the ECEF frame, while the other one is for 2D ranging datasets.
To run them, the following syntax have to be used:

libRSF/build/applications/ICRA19_GNSS <input file> <output file> error: <error model>
Expand Down Expand Up @@ -99,3 +110,36 @@ To run them, the following syntax have to be used:
A full example could be:

libRSF/build/applications/ICRA19_GNSS libRSF/datasets/smartLoc/Data_Berlin_Potsdamer_Platz_Web.txt Result_Berlin_Potsdamer_Platz_Web.txt error: gauss
#### IV 2019

These application is made for the IV 2019 conference, the corresponding paper is [2].
It can be used for GNSS datasets and calculates a 3D position in the ECEF frame.
To run them, the following syntax have to be used:

libRSF/build/applications/IV19_GNSS <input file> <output file> error: <error model>
- **\<input file\>** is the dataset you want to process, the format is explained by readme files in the datasets folder.
- **\<output file\>** is the estimated Trajectory. The output file contains several columns that represent timestamps and estimated positions:

Column 1 - Timestamp [s]
Column 2 - X coordinate in the ECEF frame [m]
Column 3 - Y coordinate in the ECEF frame [m]
Column 4 - Z coordinate in the ECEF frame [m]
Column 5-13 - Covariance matrix of the estimated position in row-major format (Currently not used!)

- **\<error model\>** is one of the following error models:

gauss - A Gaussian distribution
dcs - Dynamic Covariance Scaling
cdce - Closed form Dynamic Covariance Estimation
mm - Max-Mixture (an approximation of a Gaussian mixture)
sm - Sum-Mixture (an exact Gaussian mixture)
stmm - Adaptive Max-Mixture using the EM Algorithm
stsm - Adaptive Sum-Mixture using the EM Algorithm
stmm_vbi - Incrementally learned Max-Mixture using the VBI Algorithm
stsm_vbi - Incrementally learned Sum-Mixture using the VIB Algorithm

A full example could be:

libRSF/build/applications/IV19_GNSS libRSF/datasets/smartLoc/Data_Berlin_Potsdamer_Platz_Web.txt Result_Berlin_Potsdamer_Platz_Web.txt error: gauss
3 changes: 3 additions & 0 deletions applications/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,6 @@ target_link_libraries(ICRA19_Ranging ${CERES_LIBRARIES} libRSF)

add_executable(ICRA19_GNSS ICRA19_GNSS.cpp)
target_link_libraries(ICRA19_GNSS ${CERES_LIBRARIES} libRSF)

add_executable(IV19_GNSS IV19_GNSS.cpp)
target_link_libraries(IV19_GNSS ${CERES_LIBRARIES} libRSF)
2 changes: 1 addition & 1 deletion applications/ICRA19_GNSS.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ void TuneErrorModel(libRSF::FactorGraph &Graph,
for(int nComponent = 0; nComponent < NumberOfComponents; ++nComponent)
{

Component.setParamsStdDev((ceres::Vector(1) << 10).finished()*pow(10, nComponent),
Component.setParamsStdDev((ceres::Vector(1) << pow(10, nComponent+1)).finished(),
(ceres::Vector(1) << 0.0).finished(),
(ceres::Vector(1) << 1.0/NumberOfComponents).finished());

Expand Down
3 changes: 0 additions & 3 deletions applications/ICRA19_Ranging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@

#include "ICRA19_Ranging.h"


/** @brief Generates a delta time measurement object from two timestamps
*
* @param TimestampOld a double timestamp
Expand Down Expand Up @@ -310,8 +309,6 @@ int main(int argc, char** argv)
Graph.addState(ORIENTATION_STATE, libRSF::StateType::Angle, Timestamp);

/** add motion model or odometry */
libRSF::SensorData DeltaTime = GenerateDeltaTime(TimestampOld, Timestamp);

libRSF::StateList MotionList;
MotionList.add(POSITION_STATE, TimestampOld);
MotionList.add(POSITION_STATE, Timestamp);
Expand Down
Loading

0 comments on commit c86e11a

Please sign in to comment.