Conscience Core
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
conscience_core::sequences_processor::CscSequencePositionStrategy Class Reference

#include <CscSequencePositionStrategy.h>

Inheritance diagram for conscience_core::sequences_processor::CscSequencePositionStrategy:
conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy

Public Member Functions

 CscSequencePositionStrategy (CscSequence *globalSequence, const string &worldEntityId, CscEnvironmentSimulator *simulator)
 
 ~CscSequencePositionStrategy () override
 
void process () override
 
bool isProcessed () override
 
void lastProcess () override
 
int getSequenceIndex () override
 
void breakSequence () override
 
void terminateSequence () override
 
- Public Member Functions inherited from conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy
 CscAbstractSequenceProcessingStrategy (CscSequence *globalSequence, const string &worldEntityId, CscEnvironmentSimulator *simulator)
 
virtual ~CscAbstractSequenceProcessingStrategy ()
 
virtual void setSequenceIndex (int index)
 
virtual void resumeSequence ()
 
CscSequencegetGlobalSequence () const
 

Protected Member Functions

void computeWheelPower ()
 
void updateCurrentEntityInformations ()
 
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 parameter distanceDividerForComputeSpeed,coefficientForComputeSpeed and exponentForComputeSpeed for compute the power with the distance between the current position and the first and second position. Use the parameter degreesDeltaForSpeedTurnPercentage for lower the speed with the delta of orientation More...
 
double computeDistanceBetweenTwoPoint (CscPoint3d *firstPoint, CscPoint3d *secondPoint)
 compute the distance between two position More...
 
void setReferenceStartForComputeSpeed (CscPoint3d *position)
 return a state with the power on all wheels More...
 
bool entityArrivedToTarget (CscPoint3d *currentPosition, CscPoint3d *projectedPosition, CscPoint3d *lastTarget, CscPoint3d *target, double distance)
 
void entityForwardOrBackward (double speed, double delta)
 update the power left and right wheel , and applicate a correction with the orientation delta More...
 
void entityTurn (double delta, double val, bool backward=false)
 update the power left and right wheel , and applicate a correction with the orientation delta More...
 
CscStategetNewStateWithWheelPower (double leftPower, double rightPower)
 return a state with the good value for the wheel with the power left and right give More...
 
double positionErrorOnLine (CscPoint3d *currentPos, CscPoint3d *linePoint1, CscPoint3d *linePoint2)
 return the small distance between the current positon and the ligne More...
 
void enslavementWheelPower (double speed, double error)
 this method actualise the power left and right of wheels, she use a PID for compute correction for wheels in function of error. NOTE : information for PID / enslavement at https://intranet.conscience.live/utilisation-de-lasservissement-du-sequence-processor-pour-la-navigation More...
 
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, as well as the point of departure and arrival. the error is in degrees More...
 
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 provided and which is on the line formed by point 1 and point 2 More...
 
double getYawInDegreesFromSimulatorPositionAndRotation (CscPoint3dOriented *positionAndRotation)
 
void updateDeltaAndPositionError ()
 
- Protected Member Functions inherited from conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy
uint64_t getNextTimeWithDuration (uint64_t duration=0)
 

Protected Attributes

int index = 0
 
CscPoint3dcurrentPosition = new CscPoint3d(0, 0, 0)
 
CscPoint3dpositionForComputeSpeed = nullptr
 
CscPoint3dtargetPosition = nullptr
 
CscPoint3dlastTargetPosition = nullptr
 
CscPoint3dlastLastTargetPosition = nullptr
 
CscPoint3dreferenceStart = new CscPoint3d(0, 0, 0)
 
CscPoint3dreferenceStartForComputeSpeed = new CscPoint3d(0.0, 0.0, 0.0)
 
double lastCorrection = 0
 
double maxCorrectionStep = 1
 
double yaw = 0.0
 
double accuracy = 0.0
 
double powerLeft = 0.0
 
double powerRight = 0.0
 
double currentTurnSpeed = 0.0f
 
double currentForwardSpeed = 0.0f
 
double delta = 0
 
double deltaPosition = 0
 
bool backwardRequest = false
 
double previousError = 0.0
 
double integral = 0.0
 
const double DISTANCE_FOR_ERROR_PREDICTION_IN_CM = 10.0
 
- Protected Attributes inherited from conscience_core::sequences_processor::CscAbstractSequenceProcessingStrategy
const string worldEntityId
 
CscEnvironmentSimulatorsimulator
 
CscSequenceglobalSequence
 
uint64_t sequenceTime = 0.0L
 
uint64_t sequenceManagerTimeStart = 0.0L
 
std::unique_ptr< CscLoggerlogger = CscLogger::getForCategory("CscSequenceProcessingStrategy")
 
bool paused = false
 

Detailed Description

information for enslavement at https://intranet.conscience.live/utilisation-de-lasservissement-du-sequence-processor-pour-la-navigation

Constructor & Destructor Documentation

◆ CscSequencePositionStrategy()

conscience_core::sequences_processor::CscSequencePositionStrategy::CscSequencePositionStrategy ( CscSequence globalSequence,
const string &  worldEntityId,
CscEnvironmentSimulator simulator 
)

◆ ~CscSequencePositionStrategy()

conscience_core::sequences_processor::CscSequencePositionStrategy::~CscSequencePositionStrategy ( )
override

Member Function Documentation

◆ breakSequence()

void conscience_core::sequences_processor::CscSequencePositionStrategy::breakSequence ( )
overridevirtual

◆ computeDistanceBetweenTwoPoint()

double conscience_core::sequences_processor::CscSequencePositionStrategy::computeDistanceBetweenTwoPoint ( CscPoint3d firstPoint,
CscPoint3d secondPoint 
)
protected

compute the distance between two position

Returns
return the distance in meters

◆ computeEnslavementError()

double conscience_core::sequences_processor::CscSequencePositionStrategy::computeEnslavementError ( CscPoint3d position,
double  heading,
CscPoint3d linePoint1,
CscPoint3d linePoint2 
)
protected

this method calculates the error according to the position and the orientation of the robot, as well as the point of departure and arrival. the error is in degrees

◆ computeSpeedPowerFromTwoPositionAndDelta()

void conscience_core::sequences_processor::CscSequencePositionStrategy::computeSpeedPowerFromTwoPositionAndDelta ( CscPoint3d currentPosition,
CscPoint3d firstPosition,
CscPoint3d secondPosition,
double  delta 
)
protected

compute power off wheel with the current position and two other position. use the enslavement parameter distanceDividerForComputeSpeed,coefficientForComputeSpeed and exponentForComputeSpeed for compute the power with the distance between the current position and the first and second position. Use the parameter degreesDeltaForSpeedTurnPercentage for lower the speed with the delta of orientation

◆ computeWheelPower()

void conscience_core::sequences_processor::CscSequencePositionStrategy::computeWheelPower ( )
protected

◆ enslavementWheelPower()

void conscience_core::sequences_processor::CscSequencePositionStrategy::enslavementWheelPower ( double  speed,
double  error 
)
protected

this method actualise the power left and right of wheels, she use a PID for compute correction for wheels in function of error. NOTE : information for PID / enslavement at https://intranet.conscience.live/utilisation-de-lasservissement-du-sequence-processor-pour-la-navigation

◆ entityArrivedToTarget()

bool conscience_core::sequences_processor::CscSequencePositionStrategy::entityArrivedToTarget ( CscPoint3d currentPosition,
CscPoint3d projectedPosition,
CscPoint3d lastTarget,
CscPoint3d target,
double  distance 
)
protected

◆ entityForwardOrBackward()

void conscience_core::sequences_processor::CscSequencePositionStrategy::entityForwardOrBackward ( double  speed,
double  delta 
)
protected

update the power left and right wheel , and applicate a correction with the orientation delta

◆ entityTurn()

void conscience_core::sequences_processor::CscSequencePositionStrategy::entityTurn ( double  delta,
double  val,
bool  backward = false 
)
protected

update the power left and right wheel , and applicate a correction with the orientation delta

◆ getNewStateWithWheelPower()

CscState * conscience_core::sequences_processor::CscSequencePositionStrategy::getNewStateWithWheelPower ( double  leftPower,
double  rightPower 
)
protected

return a state with the good value for the wheel with the power left and right give

◆ getProjectedPositionOnLine()

CscPoint3d conscience_core::sequences_processor::CscSequencePositionStrategy::getProjectedPositionOnLine ( CscPoint3d position,
CscPoint3d linePoint1,
CscPoint3d linePoint2 
)
protected

the method returns a position projected on the line. This means the position closest to the position provided and which is on the line formed by point 1 and point 2

◆ getSequenceIndex()

int conscience_core::sequences_processor::CscSequencePositionStrategy::getSequenceIndex ( )
overridevirtual

◆ getYawInDegreesFromSimulatorPositionAndRotation()

double conscience_core::sequences_processor::CscSequencePositionStrategy::getYawInDegreesFromSimulatorPositionAndRotation ( CscPoint3dOriented positionAndRotation)
protected

◆ isProcessed()

bool conscience_core::sequences_processor::CscSequencePositionStrategy::isProcessed ( )
overridevirtual

◆ lastProcess()

void conscience_core::sequences_processor::CscSequencePositionStrategy::lastProcess ( )
overridevirtual

◆ positionErrorOnLine()

double conscience_core::sequences_processor::CscSequencePositionStrategy::positionErrorOnLine ( CscPoint3d currentPos,
CscPoint3d linePoint1,
CscPoint3d linePoint2 
)
protected

return the small distance between the current positon and the ligne

◆ process()

void conscience_core::sequences_processor::CscSequencePositionStrategy::process ( )
overridevirtual

◆ setReferenceStartForComputeSpeed()

void conscience_core::sequences_processor::CscSequencePositionStrategy::setReferenceStartForComputeSpeed ( CscPoint3d position)
protected

return a state with the power on all wheels

◆ terminateSequence()

void conscience_core::sequences_processor::CscSequencePositionStrategy::terminateSequence ( )
overridevirtual

◆ updateCurrentEntityInformations()

void conscience_core::sequences_processor::CscSequencePositionStrategy::updateCurrentEntityInformations ( )
protected

◆ updateDeltaAndPositionError()

void conscience_core::sequences_processor::CscSequencePositionStrategy::updateDeltaAndPositionError ( )
protected

Member Data Documentation

◆ accuracy

double conscience_core::sequences_processor::CscSequencePositionStrategy::accuracy = 0.0
protected

◆ backwardRequest

bool conscience_core::sequences_processor::CscSequencePositionStrategy::backwardRequest = false
protected

◆ currentForwardSpeed

double conscience_core::sequences_processor::CscSequencePositionStrategy::currentForwardSpeed = 0.0f
protected

◆ currentPosition

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::currentPosition = new CscPoint3d(0, 0, 0)
protected

◆ currentTurnSpeed

double conscience_core::sequences_processor::CscSequencePositionStrategy::currentTurnSpeed = 0.0f
protected

◆ delta

double conscience_core::sequences_processor::CscSequencePositionStrategy::delta = 0
protected

◆ deltaPosition

double conscience_core::sequences_processor::CscSequencePositionStrategy::deltaPosition = 0
protected

◆ DISTANCE_FOR_ERROR_PREDICTION_IN_CM

const double conscience_core::sequences_processor::CscSequencePositionStrategy::DISTANCE_FOR_ERROR_PREDICTION_IN_CM = 10.0
protected

◆ index

int conscience_core::sequences_processor::CscSequencePositionStrategy::index = 0
protected

◆ integral

double conscience_core::sequences_processor::CscSequencePositionStrategy::integral = 0.0
protected

◆ lastCorrection

double conscience_core::sequences_processor::CscSequencePositionStrategy::lastCorrection = 0
protected

◆ lastLastTargetPosition

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::lastLastTargetPosition = nullptr
protected

◆ lastTargetPosition

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::lastTargetPosition = nullptr
protected

◆ maxCorrectionStep

double conscience_core::sequences_processor::CscSequencePositionStrategy::maxCorrectionStep = 1
protected

◆ positionForComputeSpeed

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::positionForComputeSpeed = nullptr
protected

◆ powerLeft

double conscience_core::sequences_processor::CscSequencePositionStrategy::powerLeft = 0.0
protected

◆ powerRight

double conscience_core::sequences_processor::CscSequencePositionStrategy::powerRight = 0.0
protected

◆ previousError

double conscience_core::sequences_processor::CscSequencePositionStrategy::previousError = 0.0
protected

◆ referenceStart

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::referenceStart = new CscPoint3d(0, 0, 0)
protected

◆ referenceStartForComputeSpeed

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::referenceStartForComputeSpeed = new CscPoint3d(0.0, 0.0, 0.0)
protected

◆ targetPosition

CscPoint3d* conscience_core::sequences_processor::CscSequencePositionStrategy::targetPosition = nullptr
protected

◆ yaw

double conscience_core::sequences_processor::CscSequencePositionStrategy::yaw = 0.0
protected

The documentation for this class was generated from the following files: