You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hello, everyone. I'm studying the code of kalibr and trying to figure out the algorithm details for IMU-Camera calibration. kalibr uses the BSpline to represent the trajectory of IMU(or camera), and in the BSpline initialization, the below methods are called.
void BSplinePose::initPoseSplineSparse(const Eigen::VectorXd & times, const Eigen::Matrix<double,6,Eigen::Dynamic> & poses, int numSegments, double lambda), see code in line
Then call void BSpline::initSplineSparse(const Eigen::VectorXd & times, const Eigen::MatrixXd & interpolationPoints, int numSegments, double lambda), see code in line
I'm trying to understand the mathematics detail in BSpline::initSplineSparse(). Currently, I have understand several things,
The method void BSpline::initSplineSparse() is the sparse version of `void BSpline::initSpline3()', see code in line
The initialization method will build a equation Ax = B
The first part of the equation is C(t) = U(t) * M * V, which means the BSpline value evaluated at time t will be C(t).
The second part of the equation assumes the quadratic integral is zero during each segment.
// make this conditional on the order of the spline:
if (splineOrder_ == 2)
A += curveQuadraticIntegralDiag(W, 1);
else
A += curveQuadraticIntegralDiag(W, 2);
However, I couldn't understand the mathematical details in method Eigen::MatrixXd BSpline::curveQuadraticIntegralDiag(const Eigen::VectorXd& Wdiag, int derivativeOrder)(see code in line). Is anyone know the details? or some paper could be referenced?
The text was updated successfully, but these errors were encountered:
[1] Furgale, P., Tong, C. H., Barfoot, T. D., & Sibley, G. (2015). Continuous-time batch trajectory estimation using temporal basis functions. The International Journal of Robotics Research, 34(14), 1688-1710.
[2] De Boor C (2001) A Practical Guide to Splines. New York, USA: Springer Verlag.
Hello, everyone. I'm studying the code of kalibr and trying to figure out the algorithm details for IMU-Camera calibration. kalibr uses the BSpline to represent the trajectory of IMU(or camera), and in the BSpline initialization, the below methods are called.
void BSplinePose::initPoseSplineSparse(const Eigen::VectorXd & times, const Eigen::Matrix<double,6,Eigen::Dynamic> & poses, int numSegments, double lambda)
, see code in linevoid BSpline::initSplineSparse(const Eigen::VectorXd & times, const Eigen::MatrixXd & interpolationPoints, int numSegments, double lambda)
, see code in lineI'm trying to understand the mathematics detail in
BSpline::initSplineSparse()
. Currently, I have understand several things,void BSpline::initSplineSparse()
is the sparse version of `void BSpline::initSpline3()', see code in lineHowever, I couldn't understand the mathematical details in method
Eigen::MatrixXd BSpline::curveQuadraticIntegralDiag(const Eigen::VectorXd& Wdiag, int derivativeOrder)
(see code in line). Is anyone know the details? or some paper could be referenced?The text was updated successfully, but these errors were encountered: