37 #include <kdl/path.hpp>
38 #include <kdl/path_circle.hpp>
39 #include <kdl/rotational_interpolation_sa.hpp>
40 #include <kdl/utilities/error.h>
61 static std::unique_ptr<KDL::Path>
circleFromCenter(
const KDL::Frame& start_pose,
const KDL::Frame& goal_pose,
62 const KDL::Vector& center_point,
double eqradius);
69 static std::unique_ptr<KDL::Path>
circleFromInterim(
const KDL::Frame& start_pose,
const KDL::Frame& goal_pose,
70 const KDL::Vector& interim_point,
double eqradius);
80 static double cosines(
const double a,
const double b,
const double c);
82 static constexpr
double MAX_RADIUS_DIFF{ 1e-2 };
83 static constexpr
double MAX_COLINEAR_NORM{ 1e-5 };
93 return "Distances between start-center and goal-center are different."
94 " A circle cannot be created.";
98 return ERROR_CODE_CENTER_POINT_DIFFERENT_RADIUS;
102 static constexpr
int ERROR_CODE_CENTER_POINT_DIFFERENT_RADIUS{ 3006 };
const char * Description() const override
int GetType() const override
Generator class for KDL::Path_Circle from different circle representations.
static std::unique_ptr< KDL::Path > circleFromCenter(const KDL::Frame &start_pose, const KDL::Frame &goal_pose, const KDL::Vector ¢er_point, double eqradius)
set the path circle from start, goal and center point
static std::unique_ptr< KDL::Path > circleFromInterim(const KDL::Frame &start_pose, const KDL::Frame &goal_pose, const KDL::Vector &interim_point, double eqradius)
set circle from start, goal and interim point