Conscience Core
CscSequencePositionStrategy.h
Go to the documentation of this file.
1 #ifndef CscSequencePositionStrategy_H_
2 #define CscSequencePositionStrategy_H_
3 
7 
9 using std::fstream;
10 
15 private:
16  CscSequencePositions *getSequencePositions();
17 
18 protected:
19  void computeWheelPower();
21 
28  void computeSpeedPowerFromTwoPositionAndDelta(CscPoint3d *currentPosition, CscPoint3d *firstPosition, CscPoint3d *secondPosition, double delta);
34  double computeDistanceBetweenTwoPoint(CscPoint3d *firstPoint, CscPoint3d *secondPoint);
39 
40  bool entityArrivedToTarget(CscPoint3d *currentPosition, CscPoint3d *projectedPosition, CscPoint3d *lastTarget, CscPoint3d *target, double distance);
44  void entityForwardOrBackward(double speed, double delta);
48  void entityTurn(double delta, double val, bool backward = false);
49 
53  CscState *getNewStateWithWheelPower(double leftPower, double rightPower);
54 
58  double positionErrorOnLine(CscPoint3d *currentPos, CscPoint3d *linePoint1, CscPoint3d *linePoint2);
64  void enslavementWheelPower(double speed, double error);
69  double computeEnslavementError(CscPoint3d *position, double heading, CscPoint3d *linePoint1, CscPoint3d *linePoint2);
74  CscPoint3d getProjectedPositionOnLine(CscPoint3d *position, CscPoint3d *linePoint1, CscPoint3d *linePoint2);
75 
77 
79 
80  int index = 0;
88  double lastCorrection = 0;
89 
90  double maxCorrectionStep = 1;
91 
92  double yaw = 0.0;
93  double accuracy = 0.0;
94  double powerLeft = 0.0;
95  double powerRight = 0.0;
96 
97  double currentTurnSpeed = 0.0f;
98  double currentForwardSpeed = 0.0f;
99 
100  double delta = 0;
101  double deltaPosition = 0;
102 
103  bool backwardRequest = false;
104 
105  double previousError = 0.0;
106  double integral = 0.0;
107 
109 
110 public:
112  ~CscSequencePositionStrategy() override;
113  void process() override;
114  bool isProcessed() override;
115  void lastProcess() override;
116  int getSequenceIndex() override;
117  void breakSequence() override;
118  void terminateSequence() override;
119 };
120 }
121 
122 #endif
conscience_core::sequences_processor::CscSequencePositionStrategy::setReferenceStartForComputeSpeed
void setReferenceStartForComputeSpeed(CscPoint3d *position)
return a state with the power on all wheels
Definition: CscSequencePositionStrategy.cpp:84
conscience_core::sequences_processor::CscSequencePositionStrategy::lastProcess
void lastProcess() override
Definition: CscSequencePositionStrategy.cpp:337
conscience_core::sequences_processor::CscSequencePositionStrategy::index
int index
Definition: CscSequencePositionStrategy.h:80
conscience_core::sequences_processor::CscSequencePositionStrategy::positionForComputeSpeed
CscPoint3d * positionForComputeSpeed
Definition: CscSequencePositionStrategy.h:82
CscWorldEntity.h
conscience_core::axiomes::CscPoint3d
The CscPoint3d class represents a point in three-dimensional space. It is primarily used to denote a ...
Definition: Csc3dTypes.h:24
conscience_core::sequences_processor::CscSequencePositionStrategy::positionErrorOnLine
double positionErrorOnLine(CscPoint3d *currentPos, CscPoint3d *linePoint1, CscPoint3d *linePoint2)
return the small distance between the current positon and the ligne
Definition: CscSequencePositionStrategy.cpp:174
conscience_core::sequences_processor::CscSequencePositionStrategy::DISTANCE_FOR_ERROR_PREDICTION_IN_CM
const double DISTANCE_FOR_ERROR_PREDICTION_IN_CM
Definition: CscSequencePositionStrategy.h:108
conscience_core::sequences_processor::CscSequencePositionStrategy::lastTargetPosition
CscPoint3d * lastTargetPosition
Definition: CscSequencePositionStrategy.h:84
conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy::simulator
CscEnvironmentSimulator * simulator
Definition: CscAbstractSequenceProcessingStrategy.h:19
conscience_core::sequences_processor::CscSequencePositionStrategy::yaw
double yaw
Definition: CscSequencePositionStrategy.h:92
conscience_core::sequences_processor::CscSequencePositionStrategy::~CscSequencePositionStrategy
~CscSequencePositionStrategy() override
Definition: CscSequencePositionStrategy.cpp:26
CscSequencePositions
Definition: CscSequencePositions.h:23
conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy
Definition: CscAbstractSequenceProcessingStrategy.h:14
conscience_core::sequences_processor::CscSequencePositionStrategy::isProcessed
bool isProcessed() override
Definition: CscSequencePositionStrategy.cpp:328
conscience_core::sequences_processor::CscSequencePositionStrategy::entityTurn
void entityTurn(double delta, double val, bool backward=false)
update the power left and right wheel , and applicate a correction with the orientation delta
Definition: CscSequencePositionStrategy.cpp:121
conscience_core::sequences_processor::CscSequencePositionStrategy::currentTurnSpeed
double currentTurnSpeed
Definition: CscSequencePositionStrategy.h:97
conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy::globalSequence
CscSequence * globalSequence
Definition: CscAbstractSequenceProcessingStrategy.h:21
conscience_core::sequences_processor::CscSequencePositionStrategy::getNewStateWithWheelPower
CscState * getNewStateWithWheelPower(double leftPower, double rightPower)
return a state with the good value for the wheel with the power left and right give
Definition: CscSequencePositionStrategy.cpp:160
conscience_core::sequences_processor
Definition: CscEntityReflexion.h:46
conscience_core::sequences_processor::CscSequencePositionStrategy::currentPosition
CscPoint3d * currentPosition
Definition: CscSequencePositionStrategy.h:81
conscience_core::sequences_processor::CscSequencePositionStrategy::updateCurrentEntityInformations
void updateCurrentEntityInformations()
Definition: CscSequencePositionStrategy.cpp:152
conscience_core::sequences_processor::CscSequencePositionStrategy::computeSpeedPowerFromTwoPositionAndDelta
void computeSpeedPowerFromTwoPositionAndDelta(CscPoint3d *currentPosition, CscPoint3d *firstPosition, CscPoint3d *secondPosition, double delta)
compute power off wheel with the current position and two other position. use the enslavement paramet...
Definition: CscSequencePositionStrategy.cpp:68
conscience_core::sequences_processor::CscSequencePositionStrategy::terminateSequence
void terminateSequence() override
Definition: CscSequencePositionStrategy.cpp:351
conscience_core::sequences_processor::CscSequencePositionStrategy::computeWheelPower
void computeWheelPower()
Definition: CscSequencePositionStrategy.cpp:147
conscience_core::sequences_processor::CscSequencePositionStrategy::integral
double integral
Definition: CscSequencePositionStrategy.h:106
CscAbstractSequenceProcessingStrategy.h
conscience_core::sequences_processor::CscSequencePositionStrategy::powerLeft
double powerLeft
Definition: CscSequencePositionStrategy.h:94
conscience_core::sequences_processor::CscSequencePositionStrategy::computeDistanceBetweenTwoPoint
double computeDistanceBetweenTwoPoint(CscPoint3d *firstPoint, CscPoint3d *secondPoint)
compute the distance between two position
Definition: CscSequencePositionStrategy.cpp:80
CscState
Definition: CscState.h:24
conscience_core::sequences_processor::CscSequencePositionStrategy::currentForwardSpeed
double currentForwardSpeed
Definition: CscSequencePositionStrategy.h:98
conscience_core::sequences_processor::CscSequencePositionStrategy::maxCorrectionStep
double maxCorrectionStep
Definition: CscSequencePositionStrategy.h:90
conscience_core::sequences_processor::CscSequencePositionStrategy::referenceStartForComputeSpeed
CscPoint3d * referenceStartForComputeSpeed
Definition: CscSequencePositionStrategy.h:87
conscience_core::sequences_processor::CscSequencePositionStrategy::getProjectedPositionOnLine
CscPoint3d getProjectedPositionOnLine(CscPoint3d *position, CscPoint3d *linePoint1, CscPoint3d *linePoint2)
the method returns a position projected on the line. This means the position closest to the position ...
Definition: CscSequencePositionStrategy.cpp:245
conscience_core::sequences_processor::CscSequencePositionStrategy::lastCorrection
double lastCorrection
Definition: CscSequencePositionStrategy.h:88
conscience_core::sequences_processor::CscSequencePositionStrategy::computeEnslavementError
double computeEnslavementError(CscPoint3d *position, double heading, CscPoint3d *linePoint1, CscPoint3d *linePoint2)
this method calculates the error according to the position and the orientation of the robot,...
Definition: CscSequencePositionStrategy.cpp:234
conscience_core::sequences_processor::CscSequencePositionStrategy::deltaPosition
double deltaPosition
Definition: CscSequencePositionStrategy.h:101
conscience_core::sequences_processor::CscSequencePositionStrategy::targetPosition
CscPoint3d * targetPosition
Definition: CscSequencePositionStrategy.h:83
conscience_core::sequences_processor::CscSequencePositionStrategy::powerRight
double powerRight
Definition: CscSequencePositionStrategy.h:95
conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy::worldEntityId
const string worldEntityId
Definition: CscAbstractSequenceProcessingStrategy.h:18
CscSequencePositions.h
conscience_core::sequences_processor::CscSequencePositionStrategy::enslavementWheelPower
void enslavementWheelPower(double speed, double error)
this method actualise the power left and right of wheels, she use a PID for compute correction for wh...
Definition: CscSequencePositionStrategy.cpp:190
conscience_core::sequences_processor::CscSequencePositionStrategy::entityArrivedToTarget
bool entityArrivedToTarget(CscPoint3d *currentPosition, CscPoint3d *projectedPosition, CscPoint3d *lastTarget, CscPoint3d *target, double distance)
Definition: CscSequencePositionStrategy.cpp:92
conscience_core::sequences_processor::CscSequencePositionStrategy::entityForwardOrBackward
void entityForwardOrBackward(double speed, double delta)
update the power left and right wheel , and applicate a correction with the orientation delta
conscience_core::sequences_processor::CscSequencePositionStrategy::CscSequencePositionStrategy
CscSequencePositionStrategy(CscSequence *globalSequence, const string &worldEntityId, CscEnvironmentSimulator *simulator)
Definition: CscSequencePositionStrategy.cpp:23
CscEnvironmentSimulator
Definition: CscEnvironmentSimulator.h:31
conscience_core::sequences_processor::CscSequencePositionStrategy::getSequenceIndex
int getSequenceIndex() override
Definition: CscSequencePositionStrategy.cpp:343
conscience_core::sequences_processor::CscSequencePositionStrategy
Definition: CscSequencePositionStrategy.h:14
conscience_core::sequences_processor::CscSequencePositionStrategy::delta
double delta
Definition: CscSequencePositionStrategy.h:100
conscience_core::sequences_processor::CscSequencePositionStrategy::previousError
double previousError
Definition: CscSequencePositionStrategy.h:105
conscience_core::axiomes::CscPoint3dOriented
Definition: Csc3dTypes.h:265
conscience_core::sequences_processor::CscSequencePositionStrategy::backwardRequest
bool backwardRequest
Definition: CscSequencePositionStrategy.h:103
conscience_core::sequences_processor::CscSequencePositionStrategy::breakSequence
void breakSequence() override
Definition: CscSequencePositionStrategy.cpp:347
conscience_core::sequences_processor::CscSequencePositionStrategy::accuracy
double accuracy
Definition: CscSequencePositionStrategy.h:93
conscience_core::sequences_processor::CscSequencePositionStrategy::process
void process() override
Definition: CscSequencePositionStrategy.cpp:32
conscience_core::sequences_processor::CscSequencePositionStrategy::getYawInDegreesFromSimulatorPositionAndRotation
double getYawInDegreesFromSimulatorPositionAndRotation(CscPoint3dOriented *positionAndRotation)
Definition: CscSequencePositionStrategy.cpp:270
conscience_core::sequences_processor::CscSequencePositionStrategy::lastLastTargetPosition
CscPoint3d * lastLastTargetPosition
Definition: CscSequencePositionStrategy.h:85
conscience_core::sequences_processor::CscSequencePositionStrategy::updateDeltaAndPositionError
void updateDeltaAndPositionError()
Definition: CscSequencePositionStrategy.cpp:282
CscSequence
Definition: CscSequence.h:51
conscience_core::sequences_processor::CscSequencePositionStrategy::referenceStart
CscPoint3d * referenceStart
Definition: CscSequencePositionStrategy.h:86