Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

joss paper #1

Open
wants to merge 25 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# This is a basic workflow to help you get started with Actions

name: CI

# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [ main ]
pull_request:
branches: [ main ]

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

jobs:
paper:
runs-on: ubuntu-latest
name: Paper Draft
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Build draft PDF
uses: openjournals/openjournals-draft-action@master
with:
journal: joss
# This should be the path to the paper within your repo.
paper-path: joss/paper.md
- name: Upload
uses: actions/upload-artifact@v1
with:
name: paper
# This is the output path where Pandoc will write the compiled
# PDF. Note, this should be the same directory as the input
# paper.md
path: joss/paper.pdf
116 changes: 116 additions & 0 deletions joss/paper.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
@article{engel2017direct,
title={Direct sparse odometry},
author={Engel, Jakob and Koltun, Vladlen and Cremers, Daniel},
journal={IEEE transactions on pattern analysis and machine intelligence},
volume={40},
number={3},
pages={611--625},
year={2017},
doi={10.1109/TPAMI.2017.2658577},
publisher={IEEE}
}

@inproceedings{wang2017stereo,
title={Stereo DSO: Large-scale direct sparse visual odometry with stereo cameras},
author={Wang, Rui and Schworer, Martin and Cremers, Daniel},
booktitle={Proceedings of the IEEE International Conference on Computer Vision},
pages={3903--3911},
doi={10.48550/arXiv.1708.07878},
year={2017}
}

@inproceedings{schubert2018direct,
title={Direct sparse odometry with rolling shutter},
author={Schubert, David and Demmel, Nikolaus and Usenko, Vladyslav and Stuckler, Jorg and Cremers, Daniel},
booktitle={Proceedings of the European Conference on Computer Vision (ECCV)},
pages={682--697},
doi={10.1007/978-3-030-01237-3_42},
year={2018}
}

@inproceedings{gao2018ldso,
title={LDSO: Direct sparse odometry with loop closure},
author={Gao, Xiang and Wang, Rui and Demmel, Nikolaus and Cremers, Daniel},
booktitle={2018 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
pages={2198--2204},
year={2018},
doi={10.1109/IROS.2018.8593376},
organization={IEEE}
}

@ARTICLE{9669044,
author={Stumberg, Lukas von and Cremers, Daniel},
journal={IEEE Robotics and Automation Letters},
title={DM-VIO: Delayed Marginalization Visual-Inertial Odometry},
year={2022},
volume={7},
number={2},
pages={1408-1415},
doi={10.1109/LRA.2021.3140129}},


@inproceedings{yang2020d3vo,
title={D3vo: Deep depth, deep pose and deep uncertainty for monocular visual odometry},
author={Yang, Nan and Stumberg, Lukas von and Wang, Rui and Cremers, Daniel},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={1281--1292},
doi={10.48550/arXiv.2003.01060},
year={2020}
}

@article{gnnet,
author = {Lukas von Stumberg and
Patrick Wenzel and
Qadeer Khan and
Daniel Cremers},
title = {GN-Net: The Gauss-Newton Loss for Deep Direct {SLAM}},
journal = {CoRR},
volume = {abs/1904.11932},
year = {2019},
url = {http://arxiv.org/abs/1904.11932},
eprinttype = {arXiv},
eprint = {1904.11932},
timestamp = {Thu, 02 May 2019 15:13:44 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-1904-11932.bib},
doi = {10.48550/arXiv.1904.11932},
bibsource = {dblp computer science bibliography, https://dblp.org}
}

@article{other1,
author = {Hidenobu Matsuki and
Lukas von Stumberg and
Vladyslav Usenko and
J{\"{o}}rg St{\"{u}}ckler and
Daniel Cremers},
title = {Omnidirectional {DSO:} Direct Sparse Odometry with Fisheye Cameras},
journal = {CoRR},
volume = {abs/1808.02775},
year = {2018},
url = {http://arxiv.org/abs/1808.02775},
eprinttype = {arXiv},
eprint = {1808.02775},
doi = {10.1109/LRA.2018.2855443},
timestamp = {Mon, 01 Jun 2020 15:30:41 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-1808-02775.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}


@article{omni,
author = {Hidenobu Matsuki and
Lukas von Stumberg and
Vladyslav Usenko and
J{\"{o}}rg St{\"{u}}ckler and
Daniel Cremers},
title = {Omnidirectional {DSO:} Direct Sparse Odometry with Fisheye Cameras},
journal = {CoRR},
volume = {abs/1808.02775},
year = {2018},
url = {http://arxiv.org/abs/1808.02775},
eprinttype = {arXiv},
eprint = {1808.02775},
doi = {10.1109/LRA.2018.2855443},
timestamp = {Mon, 01 Jun 2020 15:30:41 +0200},
biburl = {https://dblp.org/rec/journals/corr/abs-1808-02775.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
57 changes: 57 additions & 0 deletions joss/paper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
title: 'DSO++: Modern reimplementation of Direct Sparse Odometry'
tags:
- SLAM
- odometry
authors:
- name: Sergei Solonets^[co-first author]
orcid: 0000-0002-3469-7489
affiliation: "1, 2"
- name: Igor Ilin^[co-first author]
affiliation: 1
orcid: 0000-0002-1834-4894
- name: Daniil Sinitsyn^[co-first author]
affiliation: 1
orcid: 0000-0002-9102-9065
- name: Maksim Smolskii
affiliation: 1
orcid: 0000-0001-9414-0853
- name: Oleg Chemokos
affiliation: 1
orcid: 0000-0003-2830-4340
affiliations:
- name: Roadly Inc, USA
index: 1
- name: Technical University of Munich, Germany
index: 2
date: 17 May 2022
bibliography: paper.bib

---


# Summary

We present DSO++, a modern reimplementation of one of the most well-known Simultaneous Localization And Mapping (SLAM) engines: Direct Sparse Odometry (DSO) [@engel2017direct]. Similar to its ancestor, our system produces a trajectory and a sparse point cloud from a video sequence. It acts on original image data and directly estimates motion by minimizing the photometric error. Compared to the original code, our version is covered with tests and is modular. We also designed the code with the possibility of being easily extended especially concentrating on the proposed extensions (various camera model formulations, multi-sensor setup, etc.). Another contribution is extensive testing of the functionality.

# Statement of need

Direct simultaneous localization and mapping is an active research topic in the computer vision community. One of the first working examples of direct SLAM is DSO. Since the release of the DSO code, researchers have proposed several extensions to the original method, introducing such features as rolling shutter motion modeling [@schubert2018direct], stereo [@wang2017stereo], deep learning aided depth inference [@yang2020d3vo;@gnnet], and others [@9669044;@gao2018ldso;@omni]. Almost all of the extensions are released by the same computer vision lab, most likely due to the complexity of the original DSO code. The code was not designed with a presumption of continuous development and, therefore, is hard to maintain and extend, especially by outside researchers from other groups.

The research purpose of this software is twofold. Firstly, it provides researchers with implemented and tested modules for direct SLAM: photometric bundle adjustment, feature metric bundle adjustment, marginalization, etc., which could be useful for any subsequent work as well as student projects. Secondly, similar to any other Structure From Motion algorithms it can be directly used by researchers in the area of photogrammetry, 3D reconstruction, differentiable rendering, and other similar areas. In those areas, researchers need estimated camera motion and/or approximate scene structure for further enhancement. Today it is common to use camera poses obtained from the indirect SLAM algorithms, which are shown to be less accurate compared to direct ones [@engel2017direct].

# Contribution

Compared to the original implementation we propose following improvements:

- **Modularity**. Original DSO consists of a few source files with extensive code duplication. For example, the code responsible for ray reprojection can be found in 30-50 different places. It not only makes the development process error prone but also makes the code extremely hard to modify. However, for some followup papers, this chunk of code was the only change (rolling shutter DSO [@schubert2018direct], omnidirectional DSO [@omni]). In our implementation, code is organized in a way that those kinds of contributions would require only a single modification.

- **Tests**. Every module in our implementation is covered with a test. Tests not only ensure the validity of the code but also declare the essence of this module and show their usage. There are no tests in the original DSO.

- **Extensibility**. Functionality of every follow-up research has been or can be developed within our framework. It can be turned on or off dynamically based on the configuration file. It prevents duplication of code among several repositories which insures every contribution affects previous and following contributions.





# References