Alex Pirciu
/
BFMC
a
include/BezierMotionPlanner/beziermotionplanner.hpp
- Committer:
- alexpirciu
- Date:
- 2019-03-28
- Revision:
- 1:ceee5a608e7c
File content as of revision 1:ceee5a608e7c:
/** ****************************************************************************** * @file BezierMotionPlanner.hpp * @author RBRO/PJ-IU * @version V1.0.0 * @date day-month-year * @brief This file contains the class declaration for the Bezier Motion * Planner methods. ****************************************************************************** */ /* include guard */ #ifndef MOTIONPLANNER_HPP #define MOTIONPLANNER_HPP #include <complex> #include <utility> #include <math.h> #include <BezierCurve/BezierCurve.hpp> /* Module defines */ #define WHEELBASE 0.265 namespace planner{ /** CBezierMotionPlanner class. * @brief This class implements the functionality of planner to keep the robot on the given Bezier curve. * */ class CBezierMotionPlanner { public: /* Constructor */ CBezierMotionPlanner(); /* Constructor */ CBezierMotionPlanner(bool isForward, std::complex<float> a, std::complex<float> b, std::complex<float> c, std::complex<float> d, float motion_duration_i, float timestep_i); /* Set parameters */ void setMotionPlannerParameters(bool isForward, std::complex<float> a, std::complex<float> b, std::complex<float> c, std::complex<float> d, float motion_duration_i, float timestep_i); /* Destructor */ virtual ~CBezierMotionPlanner(); /* Get Bezier Curve */ math::BezierCurve<float> getBezierCurve(); // Velocity longitudinal and angular /* Get next velocity value */ std::pair<float,float> getNextVelocity(); // Velocity longitudinal and angular, Input value [0,1] /* Get velocity value */ std::pair<float,float> getVelocity(float input_value); /* Next value valid */ bool hasValidValue(); /* Is movement forward */ bool getForward(); private: /* forward movement indicator */ bool isForward; /* Bezier Curve object */ math::BezierCurve<float> bezierCurve; /* motion duration */ float motion_duration; /* time step */ float time_step; /* Bezier value input step */ float bezierValueInput_step; /* next Bezier value */ float next_bezierValueInput; /* intialization indicator */ bool isInitialized; }; }; // namespace planner #endif // CMotionPlanner_HPP