
Example project
Dependencies: PM2_Libary Eigen
Diff: Motion.h
- Revision:
- 42:d2d2db5974c9
- Parent:
- 41:7484471403aa
- Child:
- 43:0a124a21e227
--- a/Motion.h Wed May 11 09:44:25 2022 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * Motion.h - * Copyright (c) 2022, 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_ */