BSpline.h
Go to the documentation of this file.
1 /*
2  * Copyright 2015-2019 CNRS-UM LIRMM, CNRS-AIST JRL
3  */
4 
5 #pragma once
6 
8 #include <mc_trajectory/Spline.h>
9 #include <mc_trajectory/api.h>
10 
11 #include <ndcurves/bezier_curve.h>
12 #include <vector>
13 
14 namespace mc_trajectory
15 {
16 
17 struct MC_TRAJECTORY_DLLAPI BSpline : public Spline<Eigen::Vector3d, std::vector<Eigen::Vector3d>>
18 {
19  using bezier_curve_t = ndcurves::bezier_curve<double, double, false, Eigen::Vector3d>;
20  using waypoints_t = std::vector<Eigen::Vector3d>;
21 
22 public:
32  BSpline(double duration,
33  const Eigen::Vector3d & start,
34  const Eigen::Vector3d & target,
35  const waypoints_t & waypoints = {});
36 
41  void update() override;
42 
51  std::vector<Eigen::Vector3d> splev(double t, unsigned int der = 0);
52 
59  std::vector<Eigen::Vector3d> sampleTrajectory();
60 
66  void addToGUI(mc_rtc::gui::StateBuilder & gui, const std::vector<std::string> & category);
67 
68 private:
69  std::unique_ptr<bezier_curve_t> spline = nullptr;
70 };
71 
72 } // namespace mc_trajectory
mc_trajectory::BSpline::waypoints_t
std::vector< Eigen::Vector3d > waypoints_t
Definition: BSpline.h:20
mc_trajectory::BSpline::bezier_curve_t
ndcurves::bezier_curve< double, double, false, Eigen::Vector3d > bezier_curve_t
Definition: BSpline.h:19
StateBuilder.h
mc_trajectory
Definition: BSpline.h:14
mc_rtc::gui::StateBuilder
Definition: StateBuilder.h:27
api.h
mc_trajectory::Spline
Definition: Spline.h:14
mc_trajectory::BSpline
Definition: BSpline.h:17
MC_TRAJECTORY_DLLAPI
#define MC_TRAJECTORY_DLLAPI
Definition: api.h:50
Spline.h