6#include <gtsam/slam/expressions.h>
8namespace gtsam_points {
22gtsam::Pose3_ bspline(
const gtsam::Pose3_& pose0,
const gtsam::Pose3_& pose1,
const gtsam::Pose3_& pose2,
const gtsam::Pose3_& pose3,
const gtsam::Double_& t);
37gtsam::Pose3_ bspline_se3(
const gtsam::Pose3_& pose0,
const gtsam::Pose3_& pose1,
const gtsam::Pose3_& pose2,
const gtsam::Pose3_& pose3,
const gtsam::Double_& t);
50gtsam::Rot3_ bspline_so3(
const gtsam::Rot3_& rot0,
const gtsam::Rot3_& rot1,
const gtsam::Rot3_& rot2,
const gtsam::Rot3_& rot3,
const gtsam::Double_& t);
63gtsam::Vector3_ bspline_trans(
const gtsam::Vector3_& trans0,
const gtsam::Vector3_& trans1,
const gtsam::Vector3_& trans2,
const gtsam::Vector3_& trans3,
const gtsam::Double_& t);
77bspline_angular_vel(
const gtsam::Rot3_& rot0,
const gtsam::Rot3_& rot1,
const gtsam::Rot3_& rot2,
const gtsam::Rot3_& rot3,
const gtsam::Double_& t,
const double knot_interval);
90gtsam::Vector3_ bspline_linear_vel(
91 const gtsam::Vector3_& trans0,
92 const gtsam::Vector3_& trans1,
93 const gtsam::Vector3_& trans2,
94 const gtsam::Vector3_& trans3,
95 const gtsam::Double_& t,
96 const double knot_interval);
109gtsam::Vector3_ bspline_linear_acc(
110 const gtsam::Vector3_& trans0,
111 const gtsam::Vector3_& trans1,
112 const gtsam::Vector3_& trans2,
113 const gtsam::Vector3_& trans3,
114 const gtsam::Double_& t,
115 const double knot_interval);
129gtsam::Vector6_ bspline_imu(
130 const gtsam::Pose3_ pose0,
131 const gtsam::Pose3_ pose1,
132 const gtsam::Pose3_ pose2,
133 const gtsam::Pose3_ pose3,
134 const gtsam::Double_& t,
135 const double knot_interval,
136 const gtsam::Vector3& g);
139inline gtsam::Pose3_ bspline(
const gtsam::Key key1,
const gtsam::Double_& t) {
140 return bspline(gtsam::Pose3_(key1 - 1), gtsam::Pose3_(key1), gtsam::Pose3_(key1 + 1), gtsam::Pose3_(key1 + 2), t);
143inline gtsam::Pose3_ bspline_se3(
const gtsam::Key key1,
const gtsam::Double_& t) {
144 return bspline_se3(gtsam::Pose3_(key1 - 1), gtsam::Pose3_(key1), gtsam::Pose3_(key1 + 1), gtsam::Pose3_(key1 + 2), t);
147inline gtsam::Vector6_ bspline_imu(
const gtsam::Key key1,
const gtsam::Double_& t,
const double knot_interval,
const gtsam::Vector3& g) {
148 return bspline_imu(gtsam::Pose3_(key1 - 1), gtsam::Pose3_(key1), gtsam::Pose3_(key1 + 1), gtsam::Pose3_(key1 + 2), t, knot_interval, g);