GithubHelp home page GithubHelp logo

find corresponding features about lili-om HOT 3 CLOSED

narutojxl avatar narutojxl commented on August 24, 2024
find corresponding features

from lili-om.

Comments (3)

narutojxl avatar narutojxl commented on August 24, 2024

Hi @kailaili and all,

  • I'm very sorry for the Q1 question. I mistake the vector<int> keyframe_idx;, its content begins from 1, not 0. Sorry again !
  • For Q2 question, i give some my reasons about the guess. If there are some mistakes, please tell me, look forward to disscuss with you.
    bool operator()(const T *t, const T *q, T *residual) const
    {
    Eigen::Matrix<T, 3, 1> cp{T(curr_point.x()), T(curr_point.y()), T(curr_point.z())};
    Eigen::Matrix<T, 3, 1> lpa{T(last_point_a.x()), T(last_point_a.y()), T(last_point_a.z())};
    Eigen::Matrix<T, 3, 1> lpb{T(last_point_b.x()), T(last_point_b.y()), T(last_point_b.z())};
    Eigen::Quaternion<T> q_last_curr{q[0], q[1], q[2], q[3]};
    Eigen::Matrix<T, 3, 1> t_last_curr{t[0], t[1], t[2]};
    Eigen::Quaternion<T> q_l_b{T(qlb.w()), T(qlb.x()), T(qlb.y()), T(qlb.z())};
    Eigen::Matrix<T, 3, 1> t_l_b{T(tlb.x()), T(tlb.y()), T(tlb.z())};
    Eigen::Matrix<T, 3, 1> lp;
    Eigen::Matrix<T, 3, 1> p_w;
    p_w = q_l_b.inverse() * (cp - t_l_b);
    lp = q_last_curr * cp + t_last_curr;
    Eigen::Matrix<T, 3, 1> nu = (lp - lpa).cross(lp - lpb);
    Eigen::Matrix<T, 3, 1> de = lpa - lpb;
    residual[0] = nu.norm() / de.norm();
    residual[0] *= T(s);
    return true;
    }
    • cp point is laser's point in current laser's frame. q and t is the corresponding time the imu's pose in the global frame map, namely the imu0 frame. we use the extrinsic qlb and tlb between laser and imu, transform cp into imu's frame, got p_w. then we use q and t transform p_w into map frame. lpa and lpb are the corresponding edge features in map. Is it a typo?
    • I notice that calculate surf points's residual, we use the point_w, not the cp point.
      bool operator()(const T *t, const T *q, T *residual) const
      {
      Eigen::Quaternion<T> q_w_curr{q[0], q[1], q[2], q[3]};
      Eigen::Matrix<T, 3, 1> t_w_curr{t[0], t[1], t[2]};
      Eigen::Matrix<T, 3, 1> cp{T(curr_point.x()), T(curr_point.y()), T(curr_point.z())};
      Eigen::Matrix<T, 3, 1> point_w;
      Eigen::Quaternion<T> q_l_b{T(qlb.w()), T(qlb.x()), T(qlb.y()), T(qlb.z())};
      Eigen::Matrix<T, 3, 1> t_l_b{T(tlb.x()), T(tlb.y()), T(tlb.z())};
      point_w = q_l_b.inverse() * (cp - t_l_b);
      point_w = q_w_curr * point_w + t_w_curr;
      Eigen::Matrix<T, 3, 1> norm(T(plane_unit_norm.x()), T(plane_unit_norm.y()), T(plane_unit_norm.z()));
      residual[0] = T(score) * (norm.dot(point_w) + T(negative_OA_dot_norm));
      return true;
      }

from lili-om.

limeng1523 avatar limeng1523 commented on August 24, 2024

Hi @narutojxl, thanks for your interest in this work. I'm sorry to reply to you so late. I checked the code, and you are right about Q2 question. This is a typo. It should be p_w instead of cp. These large residuals are suppressed by the Cauchy kernel function, so I didn't find this typo. I'm really sorry to make this typo, and thanks for pointing it out. I have fixed it, and we will update the code soon. If you have other questions, welcome to discuss with us.

from lili-om.

narutojxl avatar narutojxl commented on August 24, 2024

@limeng1523, thanks very much ! My problen is solved.

from lili-om.

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.