ROME_P5
Dependencies: mbed
Motion.h
- Committer:
- Inaueadr
- Date:
- 2018-04-27
- Revision:
- 0:29be10cb0afc
File content as of revision 0:29be10cb0afc:
/* * Motion.h * Copyright (c) 2018, ZHAW * All rights reserved. */ #ifndef MOTION_H_ #define MOTION_H_ #include <cstdlib> /** * This class keeps the motion values <code>position</code> and <code>velocity</code>, and * offers methods to increment these values towards a desired target position or velocity. * <br/> * To increment the current motion values, this class uses a simple 2nd order motion planner. * This planner calculates the motion to the target position or velocity with the various motion * phases, based on given limits for the profile velocity, acceleration and deceleration. * <br/> * Note that the trajectory is calculated every time the motion state is incremented. * This allows to change the target position or velocity, as well as the limits for profile * velocity, acceleration and deceleration at any time. */ class Motion { public: double position; /**< The position value of this motion, given in [m] or [rad]. */ float velocity; /**< The velocity value of this motion, given in [m/s] or [rad/s]. */ Motion(); Motion(double position, float velocity); Motion(const Motion& motion); virtual ~Motion(); void set(double position, float velocity); void set(const Motion& motion); void setPosition(double position); double getPosition(); void setVelocity(float velocity); float getVelocity(); void setProfileVelocity(float profileVelocity); void setProfileAcceleration(float profileAcceleration); void setProfileDeceleration(float profileDeceleration); void setLimits(float profileVelocity, float profileAcceleration, float profileDeceleration); float getTimeToPosition(double targetPosition); void incrementToVelocity(float targetVelocity, float period); void incrementToPosition(double targetPosition, float period); private: static const float DEFAULT_LIMIT; // default value for limits static const float MINIMUM_LIMIT; // smallest value allowed for limits float profileVelocity; float profileAcceleration; float profileDeceleration; }; #endif /* MOTION_H_ */