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

Add in citation style & references #11

Merged
merged 1 commit into from
Sep 9, 2024
Merged
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
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