Comments (5)
It is finally interesting to see that the integration of the arc, leading to eqs. 2.41:
is equivalent to the exponential of SE(2), which can be seen in eqs. 156--158 in the micro-Lie paper:
just see that the terms sin theta / theta
and (1 - cos theta) / theta
match in both cases, as it must be.
from manif.
Hi @w-hc
This is the drawing @artivis is referring to:
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.
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.
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.
@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)
- Feature request: Cotangent space HOT 2
- Question about left Jacobian trick in exp of SE(3). Is it just a special case? HOT 3
- Question about "A mciro lie theory..." and "Quaternion kinematics for the ESKF" HOT 2
- Question regarding Jacobian of inverse action HOT 4
- Lie Bracket operation HOT 8
- Paper / Cheat Sheet vs Code inconsistency HOT 2
- Broken with current Eigen3? HOT 7
- Global versus local tangent space HOT 2
- Parsing an Eigen::Isometry3d matrix HOT 5
- Support specifying C++ standard from CMake command line when compiling Python bindings HOT 2
- cc1plus(48849) malloc: *** mmap(size=2097152) failed (error code=12) HOT 2
- Minus operator of SE(3) in paper HOT 1
- cast from float to double HOT 4
- Confused by Ceres Jacobian Explanation HOT 2
- Typo(?) for Jacobian of o-minus in the cheat sheet HOT 6
- gtest.h not found on Mac using Conda HOT 9
- Support for the new Ceres manifold framework
- Build tests for Mac are obsolete HOT 1
- Group actions for complex groups HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from manif.