22 static constexpr double TWO_PI = 2.0 * M_PI;
70 void calculateForces(
double velocityX,
double& downforce,
double& drag)
const;
168 int sign(
double value)
const;
201 double& steeringFront,
202 Eigen::Vector3d& rFL, Eigen::Vector3d& rFR,
203 Eigen::Vector3d& rRL, Eigen::Vector3d& rRR,
204 Eigen::Vector3d& rFront, Eigen::Vector3d& rRear,
205 Eigen::Vector3d& vFL, Eigen::Vector3d& vFR,
206 Eigen::Vector3d& vRL, Eigen::Vector3d& vRR)
const;
209 double& Fx_FL,
double& Fx_FR,
double& Fx_RL,
double& Fx_RR)
const;
212 double steeringFront,
213 double Fx_FL,
double Fx_FR,
double Fx_RL,
double Fx_RR,
214 double Fy_Front,
double Fy_Rear,
215 double drag,
const Eigen::Vector3d& friction)
const;
218 const Eigen::Vector3d& vFL,
const Eigen::Vector3d& vFR,
219 const Eigen::Vector3d& vRL,
const Eigen::Vector3d& vRR);
224 void calculateWeightTransfer(
double& Fz_Front,
double& Fz_Rear ,
double& Fx_FL,
double& Fx_FR,
double& Fx_RL,
double& Fx_RR)
const;
230 Eigen::Vector3d
position = Eigen::Vector3d::Zero();
232 Eigen::Vector3d
velocity = Eigen::Vector3d::Zero();
277 double& steeringFront,
278 Eigen::Vector3d& rFL, Eigen::Vector3d& rFR,
279 Eigen::Vector3d& rRL, Eigen::Vector3d& rRR,
280 Eigen::Vector3d& rFront, Eigen::Vector3d& rRear,
281 Eigen::Vector3d& vFL, Eigen::Vector3d& vFR,
282 Eigen::Vector3d& vRL, Eigen::Vector3d& vRR
284 calculateWheelGeometry(steeringFront, rFL, rFR, rRL, rRR, rFront, rRear, vFL, vFR, vRL, vRR);
288 double Fy_Front,
double Fy_Rear,
double drag,
const Eigen::Vector3d& friction)
const {
290 Fy_Front, Fy_Rear, drag, friction);
void calculateNormalForces(double &Fz_Front, double &Fz_Rear) const
const AerodynamicsModel & getAeroModel() const
const Eigen::Vector3d getCalculateAccelerations(double steeringFront, double Fx_FL, double Fx_FR, double Fx_RL, double Fx_RR, double Fy_Front, double Fy_Rear, double drag, const Eigen::Vector3d &friction) const
std::array< Eigen::Vector3d, 4 > getWheelPositions() override
Wheels getTorques() override
Eigen::Vector3d orientation
double getCurrentTS() override
void setPosition(Eigen::Vector3d position) override
void setVelocity(const Eigen::Vector3d &vel)
void updateWheelSpeeds(double dt)
void setSteeringSetpointRear(double in) override
void setThrottle(Wheels in) override
const void getSlipAngles(double &kappaFront, double &kappaRear) const
double getSteeringWheelAngle() override
double throttleActuationFL
Eigen::Vector3d getAngularAcceleration() override
Eigen::Vector3d angularAcceleration
void calculateSlipAngles(double &kappaFront, double &kappaRear) const
double throttleActuationRR
void setRpmSetpoints(Wheels in) override
static constexpr double AIR_DENSITY
void setOrientation(Eigen::Vector3d orientation) override
void setTorques(Wheels in) override
Eigen::Vector3d getVelocity() override
Eigen::Vector3d getDynamicStates(double dt)
double processSlipAngleLat(double alpha_input, double Fz)
void calculateWeightTransfer(double &Fz_Front, double &Fz_Rear, double &Fx_FL, double &Fx_FR, double &Fx_RL, double &Fx_RR) const
Wheels getSteeringAngles() override
void setMinTorques(Wheels in) override
Wheels getWheelspeeds() override
void setWheelSpeedsTester(const Eigen::Vector3d &vFL, const Eigen::Vector3d &vFR, const Eigen::Vector3d &vRL, const Eigen::Vector3d &vRR)
Eigen::Vector3d getGetDynamicStates(double dt)
double throttleActuationFR
static constexpr double TORQUE_THRESHOLD
void setSteeringSetpointFront(double in) override
const void getWheelGeometry(double &steeringFront, Eigen::Vector3d &rFL, Eigen::Vector3d &rFR, Eigen::Vector3d &rRL, Eigen::Vector3d &rRR, Eigen::Vector3d &rFront, Eigen::Vector3d &rRear, Eigen::Vector3d &vFL, Eigen::Vector3d &vFR, Eigen::Vector3d &vRL, Eigen::Vector3d &vRR) const
double throttleActuationRL
const PowertrainModel & getPowertrainModel() const
Wheels getWheelOrientations() override
static constexpr double GRAVITY
SteeringModel steeringModel
void setPowerGroundSetpoint(double in) override
static constexpr double VELOCITY_MIN_THRESHOLD
bool readConfig(ConfigElement &config) override
static constexpr double VELOCITY_THRESHOLD
const SteeringModel & getSteeringModel() const
PowertrainModel powertrainModel
AerodynamicsModel aeroModel
static constexpr double TWO_PI
Eigen::Vector3d getPosition() override
static constexpr double ANGULAR_VELOCITY_THRESHOLD
void calculateLongitudinalForces(double &Fx_FL, double &Fx_FR, double &Fx_RL, double &Fx_RR) const
Eigen::Vector3d calculateAccelerations(double steeringFront, double Fx_FL, double Fx_FR, double Fx_RL, double Fx_RR, double Fy_Front, double Fy_Rear, double drag, const Eigen::Vector3d &friction) const
void setMaxTorques(Wheels in) override
double powerGroundSetpoint
void forwardIntegrate(double dt) override
void updateWheelSpeeds(const Eigen::Vector3d &vFL, const Eigen::Vector3d &vFR, const Eigen::Vector3d &vRL, const Eigen::Vector3d &vRR)
void calculateWheelGeometry(double &steeringFront, Eigen::Vector3d &rFL, Eigen::Vector3d &rFR, Eigen::Vector3d &rRL, Eigen::Vector3d &rRR, Eigen::Vector3d &rFront, Eigen::Vector3d &rRear, Eigen::Vector3d &vFL, Eigen::Vector3d &vFR, Eigen::Vector3d &vRL, Eigen::Vector3d &vRR) const
Eigen::Vector3d angularVelocity
static constexpr double ROLLING_RESISTANCE_COEFF
const void getLongitudinalForces(double &Fx_FL, double &Fx_FR, double &Fx_RL, double &Fx_RR) const
Eigen::Vector3d getOrientation() override
Eigen::Vector3d acceleration
double getVoltageTS() override
Eigen::Vector3d getAcceleration() override
Eigen::Vector3d getAngularVelocity() override
const void getNormalForces(double &Fz_Front, double &Fz_Rear) const
void calculateForces(double velocityX, double &downforce, double &drag) const
void calculateWheelTorques(const Wheels &throttleInputs, const Wheels &wheelspeeds, Wheels &torques) const
double calculateCurrent(const Wheels &torques, const Wheels &wheelspeeds, double voltage) const
double calculateEfficiency(const Wheels &torques) const
void calculateSteeringAngles(double steeringInput, Wheels &steeringAngles) const
double innerSteeringRatio
double calculateSteeringWheelAngle(const Wheels &steeringAngles) const
double outerSteeringRatio
int sign(double value) const
double calculateLateralForce(double slipAngle, double normalForce) const