| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /** | ||
| 2 | * \file curve_constraint.h | ||
| 3 | * \brief struct to define constraints on start / end velocities and | ||
| 4 | * acceleration on a curve \author Steve T. \version 0.1 \date 04/05/2017 | ||
| 5 | * | ||
| 6 | */ | ||
| 7 | |||
| 8 | #ifndef _CLASS_CURVE_CONSTRAINT | ||
| 9 | #define _CLASS_CURVE_CONSTRAINT | ||
| 10 | |||
| 11 | #include <functional> | ||
| 12 | #include <vector> | ||
| 13 | |||
| 14 | #include "MathDefs.h" | ||
| 15 | #include "serialization/archive.hpp" | ||
| 16 | #include "serialization/eigen-matrix.hpp" | ||
| 17 | |||
| 18 | namespace ndcurves { | ||
| 19 | template <typename Point> | ||
| 20 | struct curve_constraints : serialization::Serializable { | ||
| 21 | typedef Point point_t; | ||
| 22 | 65 | curve_constraints(const size_t dim = 3) | |
| 23 |
1/2✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
|
65 | : init_vel(point_t::Zero(dim)), |
| 24 |
2/4✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✗ Branch 5 not taken.
|
65 | init_acc(point_t::Zero(dim)), |
| 25 |
2/4✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✗ Branch 5 not taken.
|
65 | init_jerk(point_t::Zero(dim)), |
| 26 |
2/4✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✗ Branch 5 not taken.
|
65 | end_vel(point_t::Zero(dim)), |
| 27 |
2/4✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✗ Branch 5 not taken.
|
65 | end_acc(point_t::Zero(dim)), |
| 28 |
2/4✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✗ Branch 5 not taken.
|
65 | end_jerk(point_t::Zero(dim)), |
| 29 |
1/2✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
|
130 | dim_(dim) {} |
| 30 | |||
| 31 | 64 | curve_constraints(const curve_constraints& other) | |
| 32 | 64 | : init_vel(other.init_vel), | |
| 33 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
64 | init_acc(other.init_acc), |
| 34 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
64 | init_jerk(other.init_jerk), |
| 35 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
64 | end_vel(other.end_vel), |
| 36 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
64 | end_acc(other.end_acc), |
| 37 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
64 | end_jerk(other.end_jerk), |
| 38 | 84 | dim_(other.dim_) {} | |
| 39 | |||
| 40 | /// \brief Check if actual curve_constraints and other are equal. | ||
| 41 | /// \param other : the other curve_constraints to check. | ||
| 42 | /// \return true if the two curve_constraints are equals. | ||
| 43 | 23 | virtual bool operator==(const curve_constraints& other) const { | |
| 44 |
2/2✓ Branch 1 taken 14 times.
✓ Branch 2 taken 2 times.
|
22 | return dim_ == other.dim_ && init_vel == other.init_vel && |
| 45 |
4/4✓ Branch 1 taken 13 times.
✓ Branch 2 taken 1 times.
✓ Branch 4 taken 12 times.
✓ Branch 5 taken 1 times.
|
19 | init_acc == other.init_acc && init_jerk == other.init_jerk && |
| 46 |
6/6✓ Branch 0 taken 16 times.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 11 times.
✓ Branch 4 taken 1 times.
✓ Branch 6 taken 10 times.
✓ Branch 7 taken 1 times.
|
60 | end_vel == other.end_vel && end_acc == other.end_acc && |
| 47 |
2/2✓ Branch 1 taken 9 times.
✓ Branch 2 taken 1 times.
|
38 | end_jerk == other.end_jerk; |
| 48 | } | ||
| 49 | |||
| 50 | /// \brief Check if actual curve_constraint and other are different. | ||
| 51 | /// \param other : the other curve_constraint to check. | ||
| 52 | /// \return true if the two curve_constraint are different. | ||
| 53 | 9 | virtual bool operator!=(const curve_constraints& other) const { | |
| 54 | 9 | return !(*this == other); | |
| 55 | } | ||
| 56 | |||
| 57 | 140 | virtual ~curve_constraints() {} | |
| 58 | point_t init_vel; | ||
| 59 | point_t init_acc; | ||
| 60 | point_t init_jerk; | ||
| 61 | point_t end_vel; | ||
| 62 | point_t end_acc; | ||
| 63 | point_t end_jerk; | ||
| 64 | size_t dim_; | ||
| 65 | |||
| 66 | // Serialization of the class | ||
| 67 | friend class boost::serialization::access; | ||
| 68 | template <class Archive> | ||
| 69 | 28 | void serialize(Archive& ar, const unsigned int version) { | |
| 70 | if (version) { | ||
| 71 | // Do something depending on version ? | ||
| 72 | } | ||
| 73 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("init_vel", init_vel); |
| 74 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("init_acc", init_acc); |
| 75 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("init_jerk", init_jerk); |
| 76 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("end_vel", end_vel); |
| 77 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("end_acc", end_acc); |
| 78 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("end_jerk", end_jerk); |
| 79 |
1/2✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
|
28 | ar& boost::serialization::make_nvp("dim", dim_); |
| 80 | 28 | } | |
| 81 | }; | ||
| 82 | } // namespace ndcurves | ||
| 83 | #endif //_CLASS_CUBICZEROVELACC | ||
| 84 |