Vtol dynamics simulator class. More...
#include <vtolDynamicsSim.hpp>
Public Member Functions | |
void | calculateAerodynamics (const Eigen::Vector3d &airspeed, double AoA, double AoS, const std::array< double, 3 > &servos, Eigen::Vector3d &Faero, Eigen::Vector3d &Maero) |
double | calculateAnglesOfAtack (const Eigen::Vector3d &airSpeed) const |
double | calculateAnglesOfSideslip (const Eigen::Vector3d &airSpeed) const |
Eigen::Vector3d | calculateAngularAccel (const Eigen::Matrix< double, 3, 3, Eigen::RowMajor > &inertia, const Eigen::Vector3d &moment, const Eigen::Vector3d &prevAngVel) const |
void | calculateCDPolynomial (double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const |
void | calculateCLPolynomial (double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const |
double | calculateCmxAileron (double aileron_pos, double airspeed) const |
void | calculateCmxPolynomial (double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const |
double | calculateCmyElevator (double elevator_pos, double airspeed) const |
void | calculateCmyPolynomial (double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const |
void | calculateCmzPolynomial (double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const |
double | calculateCmzRudder (double rudder_pos, double airspeed) const |
double | calculateCSBeta (double AoS_deg, double airspeed) const |
void | calculateCSPolynomial (double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const |
double | calculateCSRudder (double rudder_pos, double airspeed) const |
double | calculateDynamicPressure (double airSpeedMod) const |
void | calculateNewState (const Eigen::Vector3d &Maero, const Eigen::Vector3d &Faero, const std::vector< double > &motors, double dt_sec) |
Eigen::Vector3d | calculateNormalForceWithoutMass () const |
Eigen::Matrix3d | calculateRotationMatrix () const |
Eigen::Vector3d | calculateWind () |
int8_t | calibrate (SimMode_t calibrationType) override |
Eigen::Vector3d | getAngularAcceleration () const |
Eigen::Vector3d | getBodyLinearVelocity () const |
const Forces & | getForces () const |
void | getIMUMeasurement (Eigen::Vector3d &accOut, Eigen::Vector3d &gyroOut) override |
Eigen::Vector3d | getLinearAcceleration () const |
const Moments & | getMoments () const |
bool | getMotorsRpm (std::vector< double > &motorsRpm) override |
Eigen::Vector3d | getVehicleAirspeed () const override |
Eigen::Vector3d | getVehicleAngularVelocity () const override |
Eigen::Quaterniond | getVehicleAttitude () const override |
Eigen::Vector3d | getVehiclePosition () const override |
Eigen::Vector3d | getVehicleVelocity () const override |
int8_t | init () override |
Use rosparam here to initialize sim. More... | |
void | land () override |
void | process (double dt_secs, const std::vector< double > &unitless_setpoint) override |
void | setInitialPosition (const Eigen::Vector3d &position, const Eigen::Quaterniond &attitudeXYZW) override |
void | setInitialVelocity (const Eigen::Vector3d &linearVelocity, const Eigen::Vector3d &angularVelocity) |
void | setWindParameter (Eigen::Vector3d windMeanVelocityNED, double wind_velocityVariance) override |
void | thruster (double actuator, double &thrust, double &torque, double &rpm) const |
VtolDynamics () | |
~VtolDynamics () final=default | |
![]() | |
UavDynamicsSimBase ()=default | |
virtual | ~UavDynamicsSimBase ()=default |
Private Member Functions | |
void | _mapUnitlessSetpointToInternal (const std::vector< double > &cmd) |
cmd is flexible, but it follows these rules: More... | |
Eigen::Vector3d | calculateAirSpeed (const Eigen::Matrix3d &rotationMatrix, const Eigen::Vector3d &estimatedVelocity, const Eigen::Vector3d &windSpeed) const |
void | loadMotorsGeometry (const std::string &path) |
void | loadParams (const std::string &path) |
void | loadTables (const std::string &path) |
void | updateActuators (double dtSecs) |
Private Attributes | |
std::normal_distribution< double > | _distribution {0.0, 1.0} |
Environment | _environment |
std::default_random_engine | _generator |
std::vector< double > | _motorsSpeed |
VtolParameters | _params |
std::array< double, 3 > | _servosValues {0.0, 0.0, 0.0} |
State | _state |
TablesWithCoeffs | _tables |
Additional Inherited Members | |
![]() | |
enum | SimMode_t { SimMode_t::NORMAL = 0, SimMode_t::MAG_1_NORMAL = 1, SimMode_t::MAG_2_OVERTURNED = 2, SimMode_t::MAG_3_HEAD_DOWN = 3, SimMode_t::MAG_4_HEAD_UP = 4, SimMode_t::MAG_5_TURNED_LEFT = 5, SimMode_t::MAG_6_TURNED_RIGHT = 6, SimMode_t::MAG_7_ARDUPILOT = 7, SimMode_t::MAG_8_ARDUPILOT = 8, SimMode_t::MAG_9_ARDUPILOT = 9, SimMode_t::ACC_1_NORMAL = 11, SimMode_t::ACC_2_OVERTURNED = 12, SimMode_t::ACC_3_HEAD_DOWN = 13, SimMode_t::ACC_4_HEAD_UP = 14, SimMode_t::ACC_5_TURNED_LEFT = 15, SimMode_t::ACC_6_TURNED_RIGHT = 16, SimMode_t::AIRSPEED = 21 } |
Vtol dynamics simulator class.
Definition at line 147 of file vtolDynamicsSim.hpp.
VtolDynamics::VtolDynamics | ( | ) |
Definition at line 37 of file vtolDynamicsSim.cpp.
|
finaldefault |
|
private |
cmd is flexible, but it follows these rules:
Definition at line 327 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateAerodynamics | ( | const Eigen::Vector3d & | airspeed, |
double | AoA, | ||
double | AoS, | ||
const std::array< double, 3 > & | servos, | ||
Eigen::Vector3d & | Faero, | ||
Eigen::Vector3d & | Maero | ||
) |
Definition at line 434 of file vtolDynamicsSim.cpp.
|
private |
Definition at line 384 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateAnglesOfAtack | ( | const Eigen::Vector3d & | airspeed_frd | ) | const |
Definition at line 407 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateAnglesOfSideslip | ( | const Eigen::Vector3d & | airSpeed | ) | const |
Definition at line 418 of file vtolDynamicsSim.cpp.
Eigen::Vector3d VtolDynamics::calculateAngularAccel | ( | const Eigen::Matrix< double, 3, 3, Eigen::RowMajor > & | inertia, |
const Eigen::Vector3d & | moment, | ||
const Eigen::Vector3d & | prevAngVel | ||
) | const |
Definition at line 620 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateCDPolynomial | ( | double | airSpeedMod, |
Eigen::VectorXd & | polynomialCoeffs | ||
) | const |
Definition at line 587 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateCLPolynomial | ( | double | airSpeedMod, |
Eigen::VectorXd & | polynomialCoeffs | ||
) | const |
Definition at line 579 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateCmxAileron | ( | double | aileron_pos, |
double | airspeed | ||
) | const |
Definition at line 609 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateCmxPolynomial | ( | double | airSpeedMod, |
Eigen::VectorXd & | polynomialCoeffs | ||
) | const |
Definition at line 591 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateCmyElevator | ( | double | elevator_pos, |
double | airspeed | ||
) | const |
Definition at line 612 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateCmyPolynomial | ( | double | airSpeedMod, |
Eigen::VectorXd & | polynomialCoeffs | ||
) | const |
Definition at line 595 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateCmzPolynomial | ( | double | airSpeedMod, |
Eigen::VectorXd & | polynomialCoeffs | ||
) | const |
Definition at line 599 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateCmzRudder | ( | double | rudder_pos, |
double | airspeed | ||
) | const |
Definition at line 615 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateCSBeta | ( | double | AoS_deg, |
double | airspeed | ||
) | const |
Definition at line 606 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateCSPolynomial | ( | double | airSpeedMod, |
Eigen::VectorXd & | polynomialCoeffs | ||
) | const |
Definition at line 583 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateCSRudder | ( | double | rudder_pos, |
double | airspeed | ||
) | const |
Definition at line 603 of file vtolDynamicsSim.cpp.
double VtolDynamics::calculateDynamicPressure | ( | double | airSpeedMod | ) | const |
Definition at line 398 of file vtolDynamicsSim.cpp.
void VtolDynamics::calculateNewState | ( | const Eigen::Vector3d & | Maero, |
const Eigen::Vector3d & | Faero, | ||
const std::vector< double > & | motors, | ||
double | dt_sec | ||
) |
Definition at line 526 of file vtolDynamicsSim.cpp.
Eigen::Vector3d VtolDynamics::calculateNormalForceWithoutMass | ( | ) | const |
Definition at line 574 of file vtolDynamicsSim.cpp.
Eigen::Matrix3d VtolDynamics::calculateRotationMatrix | ( | ) | const |
Definition at line 380 of file vtolDynamicsSim.cpp.
Eigen::Vector3d VtolDynamics::calculateWind | ( | ) |
Definition at line 364 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Reimplemented from UavDynamicsSimBase.
Definition at line 179 of file vtolDynamicsSim.cpp.
Eigen::Vector3d VtolDynamics::getAngularAcceleration | ( | ) | const |
Definition at line 676 of file vtolDynamicsSim.cpp.
Eigen::Vector3d VtolDynamics::getBodyLinearVelocity | ( | ) | const |
Definition at line 689 of file vtolDynamicsSim.cpp.
const Forces & VtolDynamics::getForces | ( | ) | const |
Definition at line 682 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 652 of file vtolDynamicsSim.cpp.
Eigen::Vector3d VtolDynamics::getLinearAcceleration | ( | ) | const |
Definition at line 679 of file vtolDynamicsSim.cpp.
const Moments & VtolDynamics::getMoments | ( | ) | const |
Definition at line 685 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Reimplemented from UavDynamicsSimBase.
Definition at line 693 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 635 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 645 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 642 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 629 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 632 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Use rosparam here to initialize sim.
Implements UavDynamicsSimBase.
Definition at line 48 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Reimplemented from UavDynamicsSimBase.
Definition at line 164 of file vtolDynamicsSim.cpp.
|
private |
Definition at line 112 of file vtolDynamicsSim.cpp.
|
private |
Definition at line 94 of file vtolDynamicsSim.cpp.
|
private |
Definition at line 75 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 300 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Implements UavDynamicsSimBase.
Definition at line 151 of file vtolDynamicsSim.cpp.
void VtolDynamics::setInitialVelocity | ( | const Eigen::Vector3d & | linearVelocity, |
const Eigen::Vector3d & | angularVelocity | ||
) |
Definition at line 158 of file vtolDynamicsSim.cpp.
|
overridevirtual |
Reimplemented from UavDynamicsSimBase.
Definition at line 671 of file vtolDynamicsSim.cpp.
void VtolDynamics::thruster | ( | double | actuator, |
double & | thrust, | ||
double & | torque, | ||
double & | rpm | ||
) | const |
Definition at line 507 of file vtolDynamicsSim.cpp.
|
private |
Definition at line 348 of file vtolDynamicsSim.cpp.
|
private |
Definition at line 244 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 241 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 243 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 235 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 238 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 236 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 239 of file vtolDynamicsSim.hpp.
|
private |
Definition at line 240 of file vtolDynamicsSim.hpp.