Skip to content

Commit

Permalink
Merge pull request #11 from contagon/easton/citations
Browse files Browse the repository at this point in the history
Add in citation style & references
  • Loading branch information
contagon authored Sep 9, 2024
2 parents f171d6f + e365102 commit 44692c4
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 6 deletions.
11 changes: 11 additions & 0 deletions assets/references.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
@article{solaMicroLieTheory2021,
title = {A Micro {{Lie}} Theory for State Estimation in Robotics},
author = {Sol{\`a}, Joan and Deray, Jeremie and Atchuthan, Dinesh},
year = {2021},
month = dec,
journal = {arXiv:1812.01537},
eprint = {1812.01537},
primaryclass = {cs},
urldate = {2022-05-11},
archiveprefix = {arXiv}
}
10 changes: 6 additions & 4 deletions src/variables/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
//!
//! This module contains the definition of the variables that can be optimized
//! using the optimization algorithms. We model each variable as a Lie group
//! $\mathcal{G}$, even if it is trivially so. Because of this, each type $X \in
//! \mathcal{G}$ must satisfy the following properties,
//! $\mathcal{G}$ [^@solaMicroLieTheory2021], even if it is trivially so.
//! Because of this, each type $X \in \mathcal{G}$ must satisfy the following
//! properties,
//!
//! Identity
//! $$
Expand All @@ -30,8 +31,7 @@
//! X \in \mathcal{G} \implies \log(X) \in \mathfrak{g}
//! $$
//! Finally, for optimization purposes, we adopt $\oplus$ and $\ominus$
//! operators as defined in "Micro Lie Theory" by Joan Solà. By default this
//! results in,
//! operators [^@solaMicroLieTheory2021],
//!
//! $$
//! x \oplus \xi = x \cdot \exp(\xi) \\\\
Expand All @@ -51,6 +51,8 @@
//! [Variable] and call the [tag_variable](crate::tag_variable) macro if using
//! serde. We also recommend using the [test_variable](crate::test_variable)
//! macro to ensure these properties are satisfied.
//!
//! [^@solaMicroLieTheory2021]: Solà, Joan, et al. “A Micro Lie Theory for State Estimation in Robotics.” Arxiv:1812.01537, Dec. 2021
mod traits;
pub use traits::{MatrixLieGroup, Variable, VariableSafe, VariableUmbrella};

Expand Down
8 changes: 6 additions & 2 deletions src/variables/traits.rs
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,16 @@ pub trait Variable<D: Numeric = dtype>: Clone + Sized + Display + Debug {

/// Adds value from the tangent space to the group element
///
/// By default this uses the "right" version as found in Micro Lie Theory
/// By default this uses the "right" version [^@solaMicroLieTheory2021]
/// $$
/// x \oplus \xi = x \cdot \exp(\xi)
/// $$
/// If the "left" feature is enabled, instead this turns to
/// $$
/// x \oplus \xi = \exp(\xi) \cdot x
/// $$
///
/// [^@solaMicroLieTheory2021]: Solà, Joan, et al. “A Micro Lie Theory for State Estimation in Robotics.” Arxiv:1812.01537, Dec. 2021
fn oplus(&self, xi: VectorViewX<D>) -> Self {
if cfg!(feature = "left") {
Self::exp(xi).compose(self)
Expand All @@ -74,14 +76,16 @@ pub trait Variable<D: Numeric = dtype>: Clone + Sized + Display + Debug {

/// Compares two group elements in the tangent space
///
/// By default this uses the "right" version as found in Micro Lie Theory
/// By default this uses the "right" version [^@solaMicroLieTheory2021]
/// $$
/// x \ominus y = \log(y^{-1} \cdot x)
/// $$
/// If the "left" feature is enabled, instead this turns to
/// $$
/// x \ominus y = \log(x \cdot y^{-1})
/// $$
///
/// [^@solaMicroLieTheory2021]: Solà, Joan, et al. “A Micro Lie Theory for State Estimation in Robotics.” Arxiv:1812.01537, Dec. 2021
fn ominus(&self, y: &Self) -> VectorX<D> {
if cfg!(feature = "left") {
self.compose(&y.inverse()).log()
Expand Down

0 comments on commit 44692c4

Please sign in to comment.