Giter Club home page Giter Club logo

Comments (5)

joansola avatar joansola commented on May 27, 2024 2

It is finally interesting to see that the integration of the arc, leading to eqs. 2.41:

imatge

is equivalent to the exponential of SE(2), which can be seen in eqs. 156--158 in the micro-Lie paper:

imatge

just see that the terms sin theta / theta and (1 - cos theta) / theta match in both cases, as it must be.

from manif.

joansola avatar joansola commented on May 27, 2024 1

Hi @w-hc

This is the drawing @artivis is referring to:

imatge

They all represent motion integration of a body in the plane, following linear velocity v and angular velocity w for a period of time dt.

The left sketch is what you do in SE(2). You can see that the black arc is a "simultaneous translation and rotation as a continuum". If X=[R T ; 0 1], the formula for this motion is

X+ = X (+) [v*dt, w*dt] = [R*exp(w*dt),  T + V(w_dt)*R*v*dt ; 0, 1]

and the whole arc can be computed in just one step, no matter how large w*dt is, as long as v and w are constant..

In the other sketches, the blue trajectories correspond to integrating motion in R2xSO(2) for different values of w*dt. The validity of the approximation depends on the magnitude of w*dt = d_theta. You can see that the blue trajectory performs "chained translation and rotation". The formula for each step is:

X+ = X (+) [v*dt, w*dt] = [R*exp(w*dt),  T + R*v*dt ; 0, 1]

that is, the V() has become the identity matrix. For this, you need small steps in w*dt, even if v and w are constant, otherwise you would just translate along the X axis and only turn at the end of the trajectory, which would be awfully wrong.

The red trajectories are not relevant here -- they are just a way to produce "chained translation and rotation" that respects the continuous trajectory at the evaluation points. But this is NOT what happens in plain R2xSO(2).

In 3D it's the same idea, just one has to consider the magnitude |w|*dt = |d_theta| as the parameter that determines the validity of the approximation.

In almost all practical cases, R3xSO(3) does just fine.

However, if you want to use the Lie math for Invariant filtering, that is, if you want to pull from some interesting properties of Lie groups that allow you to build EKF's that act as if they were linear, then you have no more choice and you need to select your group carefully. Read Bonnabel and Barrau papers on these matters is you are interested.

from manif.

joansola avatar joansola commented on May 27, 2024 1

Hi @stefangachter

You can consult Section 2.3.4. of this document . However, the document does not deal with Lie theory, just with good old plain motion integration. It happens that the drawing serves well the purpose of this issue.

from manif.

artivis avatar artivis commented on May 27, 2024

Hi @w-hc,

tldr As the update tends to infinitely small, these representations tend to be the same. It is only as the update grows away from zero that the difference shows.

@joansola may have a better explanation and most importantly I remember a drawing of several circles for different tau that might be useful here.

from manif.

stefangachter avatar stefangachter commented on May 27, 2024

@joansola, thanks for the concise explanation! Is the figure from an article that is publicly available? I would like to dig a little more into the "integration" part.

from manif.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.