Giter Club home page Giter Club logo

Comments (7)

lewisjiang avatar lewisjiang commented on June 14, 2024 6

I read the code as of commit 8b78958, and I think the data flow is like this (correct me if I'm wrong, which is very likely):

  1. The VIO publishes odom as topic "/vins/odometry/imu_propagate_ros" in visualization.cpp#L25.
  2. And it is subcribed only in imageProjection.cpp#L93 of the LIO module, which collects the subscribed data in odometryHandler(), and it further deskews the laser scans and publishes a self-defined cloud msg called cloudInfo embedded with the odom information in the same file.
  3. In mapOptmization.cpp#L833 the odom in the cloud is read to produce transFinal, which is an initial guess of the pose. The pose parameters are copied into transformTobeMapped[6] and updated in scan-map optimization in LMOptimization().
  4. The pose parameters transformTobeMapped[6] are added into isam2 graph as a "to pose" of a between factor in addOdomFactor().

So in summary, the function addOdomFactor() adds a single odometry factor calculated from l, v and i sensors, instead of 3 independent factors as depicted in the paper.

from lvi-sam.

jaeseok4104 avatar jaeseok4104 commented on June 14, 2024

i agree this comment, if VINS-MONO breaks down, LVI-SAM doesn't produce good results

from lvi-sam.

xuwuzhou avatar xuwuzhou commented on June 14, 2024

Really? Only the laser odometry and IMU are used in the code?

from lvi-sam.

jaeseok4104 avatar jaeseok4104 commented on June 14, 2024

@lewisjiang You're right. Only LIO is being added as a factor. The VIO is only used as an initial guess for the LIO. The VIO replaces only the initial guess of the LIO in the LIO-SAM and does not perform any other role.

from lvi-sam.

epicjung avatar epicjung commented on June 14, 2024

After reading your paper and code, thank you very much for your work. But I have the following questions:

  1. The laser odometry only uses the result of the visual odometry as the initial optimization value. This should be loosely coupled.
  2. Compared with LIO-SAM, LVI-SAM only uses the result of the visual odometry as the initial value of scanning matching, and does not improve the laser odometry. Can the performance of the LVI-SAM really be significantly improved?
  3. The results of laser odometry, visual odometry, and IMU pre-integration are used in the paper to perform factor graph optimization. But only the results of the laser odometry and IMU are used in the code. The laser odometry has higher estimation accuracy than the visual odometry, so adding the result of the visual odometry to the factor graph will reduce the optimization accuracy, right?
  1. I think the author mentions it's tightly coupled because when VIO is not initialized, VIO system gets the IMU bias and state from the LIO.
  2. Yeah, it's hard to believe that there's a performance improvement, but I am trying to run LVI-SAM on real dataset and it's not working well when VINS fails to find enough features
  3. Maybe, Ceres gives the optimized VIO from biases and state from LIO (only initially) and LIO system uses that optimized VIO result as initial to optimize once again via iSAM2. So, it's kinda using both VIO and LIO in the factor graph asynchronously. I am curious whether there's a better way to integrate all into one solver.

from lvi-sam.

SiyuanHuang95 avatar SiyuanHuang95 commented on June 14, 2024

Replay

Based on the paper:

If the VIS reports failure, we then switch to IMU measurements for the initial guess.

The failure of VINS should not lead to the bad result? Since in such case, the LVI-SAM should turn into LIO-SAM?

from lvi-sam.

stale avatar stale commented on June 14, 2024

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

from lvi-sam.

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.