vtolDynamicsSim.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2020-2023 RaccoonLab.
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, version 3.
7  *
8  * This program is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  * General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Author: Dmitry Ponomarev <ponomarevda96@gmail.com>
17  */
18 
19 
20 #ifndef VTOL_DYNAMICS_SIM_H
21 #define VTOL_DYNAMICS_SIM_H
22 
23 #include <Eigen/Geometry>
24 #include <vector>
25 #include <array>
26 #include <random>
27 #include "uavDynamicsSimBase.hpp"
28 
29 inline constexpr size_t MOTORS_MIN_AMOUNT = 5;
30 inline constexpr size_t MOTORS_MAX_AMOUNT = 9;
31 
32 struct Geometry {
33  Eigen::Vector3d position; // Meters
34  Eigen::Vector3d axis; // Unitless
35  bool directionCCW; // True for CCW, False for CW
36 };
37 
39  double mass; // kg
40  double wingArea; // m^2
41  double characteristicLength; // m
42  Eigen::Matrix<double, 3, 3, Eigen::RowMajor> inertia; // kg*m^2
43 
44  std::vector<double> actuatorMin; // rad/sec
45  std::vector<double> actuatorMax; // rad/sec
46 
47  std::vector<double> motorMaxSpeed; // rad/sec
48  std::vector<double> servoRange;
49  std::vector<Geometry> geometry;
50 
51  double accVariance;
52  double gyroVariance;
53 
57  double massUncertainty; // multiplier
58  double inertiaUncertainty; // multiplier
59 
60  Eigen::Vector3d accelBias;
61  Eigen::Vector3d gyroBias;
62 };
63 
64 struct Forces{
65  Eigen::Vector3d lift;
66  Eigen::Vector3d drug;
67  Eigen::Vector3d side;
68  Eigen::Vector3d aero;
69  std::array<Eigen::Vector3d, MOTORS_MAX_AMOUNT> motors;
70  Eigen::Vector3d specific;
71  Eigen::Vector3d total;
72 };
73 
74 struct Moments{
75  Eigen::Vector3d aero;
76  Eigen::Vector3d steer;
77  Eigen::Vector3d airspeed;
78  std::array<Eigen::Vector3d, MOTORS_MAX_AMOUNT> motors;
79  Eigen::Vector3d total;
80 };
81 
82 struct State{
86  Eigen::Vector3d initialPose; // meters
87  Eigen::Vector3d position; // meters
88  Eigen::Vector3d linearVelNed; // m/sec
89  Eigen::Vector3d linearAccel; // m/sec^2
90 
94  Eigen::Quaterniond initialAttitude; // quaternion
95  Eigen::Quaterniond attitude; // quaternion
96  Eigen::Vector3d angularVel; // rad/sec
97  Eigen::Vector3d angularAccel; // rad/sec^2
98  Eigen::Vector3d airspeedFrd; // m/sec
99 
102 
103  std::array<double, MOTORS_MAX_AMOUNT> motorsRpm; // rpm
104  Eigen::Vector3d bodylinearVel; // m/sec (just for debug only)
105  std::vector<double> prevActuators; // rad/sec
106  std::vector<double> crntActuators; // rad/sec
107 };
108 
109 struct Environment{
110  double windVariance;
111  Eigen::Vector3d windNED; // m/sec^2
112  Eigen::Vector3d gustVelocityNED; // m/sec^2
113  double gustVariance;
114  double gravity; // n/sec^2
115  double atmoRho; // air density (kg/m^3)
116 };
117 
119  Eigen::Matrix<double, 8, 20, Eigen::RowMajor> CS_rudder;
120  Eigen::Matrix<double, 8, 90, Eigen::RowMajor> CS_beta;
121 
122  Eigen::Matrix<double, 1, 47, Eigen::RowMajor> AoA;
123  Eigen::Matrix<double, 90, 1, Eigen::ColMajor> AoS;
124 
125  Eigen::Matrix<double, 20, 1, Eigen::ColMajor> actuator;
126  Eigen::Matrix<double, 8, 1, Eigen::ColMajor> airspeed;
127 
128  Eigen::Matrix<double, 8, 8, Eigen::RowMajor> CLPolynomial;
129  Eigen::Matrix<double, 8, 8, Eigen::RowMajor> CSPolynomial;
130  Eigen::Matrix<double, 8, 6, Eigen::RowMajor> CDPolynomial;
131  Eigen::Matrix<double, 8, 8, Eigen::RowMajor> CmxPolynomial;
132  Eigen::Matrix<double, 8, 8, Eigen::RowMajor> CmyPolynomial;
133  Eigen::Matrix<double, 8, 8, Eigen::RowMajor> CmzPolynomial;
134 
135  Eigen::Matrix<double, 8, 20, Eigen::RowMajor> CmxAileron;
136  Eigen::Matrix<double, 8, 20, Eigen::RowMajor> CmyElevator;
137  Eigen::Matrix<double, 8, 20, Eigen::RowMajor> CmzRudder;
138 
139  Eigen::Matrix<double, 40, 5, Eigen::RowMajor> prop;
140 
141  std::vector<double> actuatorTimeConstants;
142 };
143 
148  public:
149  VtolDynamics();
150  ~VtolDynamics() final = default;
151 
152  int8_t init() override;
153  void setInitialPosition(const Eigen::Vector3d & position,
154  const Eigen::Quaterniond& attitudeXYZW) override;
155  void land() override;
156  int8_t calibrate(SimMode_t calibrationType) override;
157  void process(double dt_secs, const std::vector<double>& unitless_setpoint) override;
158 
162  Eigen::Vector3d getVehiclePosition() const override;
163  Eigen::Quaterniond getVehicleAttitude() const override;
164  Eigen::Vector3d getVehicleVelocity() const override;
165  Eigen::Vector3d getVehicleAirspeed() const override;
166  Eigen::Vector3d getVehicleAngularVelocity() const override;
167  void getIMUMeasurement(Eigen::Vector3d& accOut, Eigen::Vector3d& gyroOut) override;
168  bool getMotorsRpm(std::vector<double>& motorsRpm) override;
169 
173  const Forces& getForces() const;
174  const Moments& getMoments() const;
175  Eigen::Vector3d getBodyLinearVelocity() const;
176 
177  // For tests only
178  Eigen::Vector3d getAngularAcceleration() const;
179  Eigen::Vector3d getLinearAcceleration() const;
180 
185  Eigen::Vector3d calculateNormalForceWithoutMass() const;
186  Eigen::Vector3d calculateWind();
187  Eigen::Matrix3d calculateRotationMatrix() const;
188  double calculateDynamicPressure(double airSpeedMod) const;
189  double calculateAnglesOfAtack(const Eigen::Vector3d& airSpeed) const;
190  double calculateAnglesOfSideslip(const Eigen::Vector3d& airSpeed) const;
191  void thruster(double actuator, double& thrust, double& torque, double& rpm) const;
192  void calculateNewState(const Eigen::Vector3d& Maero,
193  const Eigen::Vector3d& Faero,
194  const std::vector<double>& motors,
195  double dt_sec);
196 
197  void calculateAerodynamics(const Eigen::Vector3d& airspeed,
198  double AoA,
199  double AoS,
200  const std::array<double, 3>& servos,
201  Eigen::Vector3d& Faero,
202  Eigen::Vector3d& Maero);
203 
204  void calculateCLPolynomial(double airSpeedMod, Eigen::VectorXd& polynomialCoeffs) const;
205  void calculateCSPolynomial(double airSpeedMod, Eigen::VectorXd& polynomialCoeffs) const;
206  void calculateCDPolynomial(double airSpeedMod, Eigen::VectorXd& polynomialCoeffs) const;
207  void calculateCmxPolynomial(double airSpeedMod, Eigen::VectorXd& polynomialCoeffs) const;
208  void calculateCmyPolynomial(double airSpeedMod, Eigen::VectorXd& polynomialCoeffs) const;
209  void calculateCmzPolynomial(double airSpeedMod, Eigen::VectorXd& polynomialCoeffs) const;
210 
211  double calculateCSRudder(double rudder_pos, double airspeed) const;
212  double calculateCSBeta(double AoS_deg, double airspeed) const;
213  double calculateCmxAileron(double aileron_pos, double airspeed) const;
214  double calculateCmyElevator(double elevator_pos, double airspeed) const;
215  double calculateCmzRudder(double rudder_pos, double airspeed) const;
216 
217  Eigen::Vector3d calculateAngularAccel(const Eigen::Matrix<double, 3, 3, Eigen::RowMajor>& inertia,
218  const Eigen::Vector3d& moment,
219  const Eigen::Vector3d& prevAngVel) const;
220 
221  void setWindParameter(Eigen::Vector3d windMeanVelocityNED, double wind_velocityVariance) override;
222  void setInitialVelocity(const Eigen::Vector3d& linearVelocity,
223  const Eigen::Vector3d& angularVelocity);
224 
225  private:
226  void loadTables(const std::string& path);
227  void loadParams(const std::string& path);
228  void loadMotorsGeometry(const std::string& path);
229  void _mapUnitlessSetpointToInternal(const std::vector<double>& cmd);
230  void updateActuators(double dtSecs);
231  Eigen::Vector3d calculateAirSpeed(const Eigen::Matrix3d& rotationMatrix,
232  const Eigen::Vector3d& estimatedVelocity,
233  const Eigen::Vector3d& windSpeed) const;
234 
235  std::vector<double> _motorsSpeed;
236  std::array<double, 3> _servosValues{0.0, 0.0, 0.0};
237 
242 
243  std::default_random_engine _generator;
244  std::normal_distribution<double> _distribution{0.0, 1.0};
245 };
246 
247 #endif // VTOL_DYNAMICS_SIM_H
TablesWithCoeffs::prop
Eigen::Matrix< double, 40, 5, Eigen::RowMajor > prop
Definition: vtolDynamicsSim.hpp:139
UavDynamicsSimBase::SimMode_t
SimMode_t
Definition: uavDynamicsSimBase.hpp:57
VtolDynamics::calculateNormalForceWithoutMass
Eigen::Vector3d calculateNormalForceWithoutMass() const
Definition: vtolDynamicsSim.cpp:574
Environment
Definition: vtolDynamicsSim.hpp:109
VtolDynamics::loadMotorsGeometry
void loadMotorsGeometry(const std::string &path)
Definition: vtolDynamicsSim.cpp:112
VtolDynamics
Vtol dynamics simulator class.
Definition: vtolDynamicsSim.hpp:147
VtolParameters::servoRange
std::vector< double > servoRange
Definition: vtolDynamicsSim.hpp:48
VtolDynamics::_distribution
std::normal_distribution< double > _distribution
Definition: vtolDynamicsSim.hpp:244
VtolDynamics::calculateRotationMatrix
Eigen::Matrix3d calculateRotationMatrix() const
Definition: vtolDynamicsSim.cpp:380
VtolDynamics::_params
VtolParameters _params
Definition: vtolDynamicsSim.hpp:238
VtolParameters
Definition: vtolDynamicsSim.hpp:38
VtolDynamics::init
int8_t init() override
Use rosparam here to initialize sim.
Definition: vtolDynamicsSim.cpp:48
State::prevActuators
std::vector< double > prevActuators
Definition: vtolDynamicsSim.hpp:105
VtolParameters::inertia
Eigen::Matrix< double, 3, 3, Eigen::RowMajor > inertia
Definition: vtolDynamicsSim.hpp:42
VtolDynamics::getAngularAcceleration
Eigen::Vector3d getAngularAcceleration() const
Definition: vtolDynamicsSim.cpp:676
TablesWithCoeffs::CmzPolynomial
Eigen::Matrix< double, 8, 8, Eigen::RowMajor > CmzPolynomial
Definition: vtolDynamicsSim.hpp:133
State::moments
Moments moments
Definition: vtolDynamicsSim.hpp:101
Forces::motors
std::array< Eigen::Vector3d, MOTORS_MAX_AMOUNT > motors
Definition: vtolDynamicsSim.hpp:69
Moments::steer
Eigen::Vector3d steer
Definition: vtolDynamicsSim.hpp:76
VtolDynamics::calculateCmyPolynomial
void calculateCmyPolynomial(double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const
Definition: vtolDynamicsSim.cpp:595
VtolDynamics::_motorsSpeed
std::vector< double > _motorsSpeed
Definition: vtolDynamicsSim.hpp:235
Moments::aero
Eigen::Vector3d aero
Definition: vtolDynamicsSim.hpp:75
Moments::total
Eigen::Vector3d total
Definition: vtolDynamicsSim.hpp:79
VtolDynamics::calculateCmyElevator
double calculateCmyElevator(double elevator_pos, double airspeed) const
Definition: vtolDynamicsSim.cpp:612
VtolParameters::geometry
std::vector< Geometry > geometry
Definition: vtolDynamicsSim.hpp:49
VtolDynamics::getMotorsRpm
bool getMotorsRpm(std::vector< double > &motorsRpm) override
Definition: vtolDynamicsSim.cpp:693
Moments::motors
std::array< Eigen::Vector3d, MOTORS_MAX_AMOUNT > motors
Definition: vtolDynamicsSim.hpp:78
State::crntActuators
std::vector< double > crntActuators
Definition: vtolDynamicsSim.hpp:106
State::forces
Forces forces
Definition: vtolDynamicsSim.hpp:100
TablesWithCoeffs::CmyElevator
Eigen::Matrix< double, 8, 20, Eigen::RowMajor > CmyElevator
Definition: vtolDynamicsSim.hpp:136
TablesWithCoeffs::airspeed
Eigen::Matrix< double, 8, 1, Eigen::ColMajor > airspeed
Definition: vtolDynamicsSim.hpp:126
State::bodylinearVel
Eigen::Vector3d bodylinearVel
Definition: vtolDynamicsSim.hpp:104
VtolDynamics::_generator
std::default_random_engine _generator
Definition: vtolDynamicsSim.hpp:243
Forces::aero
Eigen::Vector3d aero
Definition: vtolDynamicsSim.hpp:68
VtolDynamics::getMoments
const Moments & getMoments() const
Definition: vtolDynamicsSim.cpp:685
Forces
Definition: vtolDynamicsSim.hpp:64
VtolDynamics::setInitialPosition
void setInitialPosition(const Eigen::Vector3d &position, const Eigen::Quaterniond &attitudeXYZW) override
Definition: vtolDynamicsSim.cpp:151
VtolParameters::motorMaxSpeed
std::vector< double > motorMaxSpeed
Definition: vtolDynamicsSim.hpp:47
VtolDynamics::calculateCmxAileron
double calculateCmxAileron(double aileron_pos, double airspeed) const
Definition: vtolDynamicsSim.cpp:609
VtolDynamics::_mapUnitlessSetpointToInternal
void _mapUnitlessSetpointToInternal(const std::vector< double > &cmd)
cmd is flexible, but it follows these rules:
Definition: vtolDynamicsSim.cpp:327
State::airspeedFrd
Eigen::Vector3d airspeedFrd
Definition: vtolDynamicsSim.hpp:98
uavDynamicsSimBase.hpp
VtolDynamics::calculateCmxPolynomial
void calculateCmxPolynomial(double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const
Definition: vtolDynamicsSim.cpp:591
VtolDynamics::updateActuators
void updateActuators(double dtSecs)
Definition: vtolDynamicsSim.cpp:348
MOTORS_MIN_AMOUNT
constexpr size_t MOTORS_MIN_AMOUNT
Definition: vtolDynamicsSim.hpp:29
VtolDynamics::getBodyLinearVelocity
Eigen::Vector3d getBodyLinearVelocity() const
Definition: vtolDynamicsSim.cpp:689
TablesWithCoeffs::CDPolynomial
Eigen::Matrix< double, 8, 6, Eigen::RowMajor > CDPolynomial
Definition: vtolDynamicsSim.hpp:130
Forces::side
Eigen::Vector3d side
Definition: vtolDynamicsSim.hpp:67
VtolDynamics::getVehicleAngularVelocity
Eigen::Vector3d getVehicleAngularVelocity() const override
Definition: vtolDynamicsSim.cpp:645
Environment::gravity
double gravity
Definition: vtolDynamicsSim.hpp:114
Environment::atmoRho
double atmoRho
Definition: vtolDynamicsSim.hpp:115
Forces::specific
Eigen::Vector3d specific
Definition: vtolDynamicsSim.hpp:70
VtolDynamics::calculateAirSpeed
Eigen::Vector3d calculateAirSpeed(const Eigen::Matrix3d &rotationMatrix, const Eigen::Vector3d &estimatedVelocity, const Eigen::Vector3d &windSpeed) const
Definition: vtolDynamicsSim.cpp:384
VtolParameters::gyroBias
Eigen::Vector3d gyroBias
Definition: vtolDynamicsSim.hpp:61
VtolDynamics::calculateAnglesOfSideslip
double calculateAnglesOfSideslip(const Eigen::Vector3d &airSpeed) const
Definition: vtolDynamicsSim.cpp:418
State::position
Eigen::Vector3d position
Definition: vtolDynamicsSim.hpp:87
VtolDynamics::calculateCSBeta
double calculateCSBeta(double AoS_deg, double airspeed) const
Definition: vtolDynamicsSim.cpp:606
VtolDynamics::calculateCLPolynomial
void calculateCLPolynomial(double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const
Definition: vtolDynamicsSim.cpp:579
VtolParameters::characteristicLength
double characteristicLength
Definition: vtolDynamicsSim.hpp:41
VtolParameters::actuatorMin
std::vector< double > actuatorMin
Definition: vtolDynamicsSim.hpp:44
VtolDynamics::calculateDynamicPressure
double calculateDynamicPressure(double airSpeedMod) const
Definition: vtolDynamicsSim.cpp:398
UavDynamicsSimBase
Definition: uavDynamicsSimBase.hpp:30
State::motorsRpm
std::array< double, MOTORS_MAX_AMOUNT > motorsRpm
Definition: vtolDynamicsSim.hpp:103
Geometry::axis
Eigen::Vector3d axis
Definition: vtolDynamicsSim.hpp:34
TablesWithCoeffs::CmxPolynomial
Eigen::Matrix< double, 8, 8, Eigen::RowMajor > CmxPolynomial
Definition: vtolDynamicsSim.hpp:131
VtolDynamics::_tables
TablesWithCoeffs _tables
Definition: vtolDynamicsSim.hpp:240
VtolDynamics::loadParams
void loadParams(const std::string &path)
Definition: vtolDynamicsSim.cpp:94
TablesWithCoeffs::CS_beta
Eigen::Matrix< double, 8, 90, Eigen::RowMajor > CS_beta
Definition: vtolDynamicsSim.hpp:120
Forces::lift
Eigen::Vector3d lift
Definition: vtolDynamicsSim.hpp:65
VtolParameters::accVariance
double accVariance
Definition: vtolDynamicsSim.hpp:51
TablesWithCoeffs::CS_rudder
Eigen::Matrix< double, 8, 20, Eigen::RowMajor > CS_rudder
Definition: vtolDynamicsSim.hpp:119
VtolDynamics::calibrate
int8_t calibrate(SimMode_t calibrationType) override
Definition: vtolDynamicsSim.cpp:179
TablesWithCoeffs
Definition: vtolDynamicsSim.hpp:118
State::angularAccel
Eigen::Vector3d angularAccel
Definition: vtolDynamicsSim.hpp:97
VtolDynamics::loadTables
void loadTables(const std::string &path)
Definition: vtolDynamicsSim.cpp:75
VtolDynamics::calculateCSPolynomial
void calculateCSPolynomial(double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const
Definition: vtolDynamicsSim.cpp:583
State::angularVel
Eigen::Vector3d angularVel
Definition: vtolDynamicsSim.hpp:96
VtolDynamics::calculateAngularAccel
Eigen::Vector3d calculateAngularAccel(const Eigen::Matrix< double, 3, 3, Eigen::RowMajor > &inertia, const Eigen::Vector3d &moment, const Eigen::Vector3d &prevAngVel) const
Definition: vtolDynamicsSim.cpp:620
TablesWithCoeffs::CmzRudder
Eigen::Matrix< double, 8, 20, Eigen::RowMajor > CmzRudder
Definition: vtolDynamicsSim.hpp:137
VtolDynamics::~VtolDynamics
~VtolDynamics() final=default
VtolDynamics::getVehicleVelocity
Eigen::Vector3d getVehicleVelocity() const override
Definition: vtolDynamicsSim.cpp:632
VtolDynamics::calculateCmzPolynomial
void calculateCmzPolynomial(double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const
Definition: vtolDynamicsSim.cpp:599
State::initialPose
Eigen::Vector3d initialPose
Definition: vtolDynamicsSim.hpp:86
State::linearVelNed
Eigen::Vector3d linearVelNed
Definition: vtolDynamicsSim.hpp:88
VtolDynamics::getVehicleAirspeed
Eigen::Vector3d getVehicleAirspeed() const override
Definition: vtolDynamicsSim.cpp:635
VtolDynamics::thruster
void thruster(double actuator, double &thrust, double &torque, double &rpm) const
Definition: vtolDynamicsSim.cpp:507
TablesWithCoeffs::CSPolynomial
Eigen::Matrix< double, 8, 8, Eigen::RowMajor > CSPolynomial
Definition: vtolDynamicsSim.hpp:129
State
Definition: vtolDynamicsSim.hpp:82
VtolDynamics::getLinearAcceleration
Eigen::Vector3d getLinearAcceleration() const
Definition: vtolDynamicsSim.cpp:679
Moments
Definition: vtolDynamicsSim.hpp:74
VtolParameters::inertiaUncertainty
double inertiaUncertainty
Definition: vtolDynamicsSim.hpp:58
TablesWithCoeffs::CLPolynomial
Eigen::Matrix< double, 8, 8, Eigen::RowMajor > CLPolynomial
Definition: vtolDynamicsSim.hpp:128
VtolDynamics::setWindParameter
void setWindParameter(Eigen::Vector3d windMeanVelocityNED, double wind_velocityVariance) override
Definition: vtolDynamicsSim.cpp:671
VtolDynamics::_state
State _state
Definition: vtolDynamicsSim.hpp:239
VtolDynamics::getForces
const Forces & getForces() const
Definition: vtolDynamicsSim.cpp:682
TablesWithCoeffs::AoS
Eigen::Matrix< double, 90, 1, Eigen::ColMajor > AoS
Definition: vtolDynamicsSim.hpp:123
VtolDynamics::calculateWind
Eigen::Vector3d calculateWind()
Definition: vtolDynamicsSim.cpp:364
Forces::total
Eigen::Vector3d total
Definition: vtolDynamicsSim.hpp:71
Geometry::position
Eigen::Vector3d position
Definition: vtolDynamicsSim.hpp:33
Environment::windNED
Eigen::Vector3d windNED
Definition: vtolDynamicsSim.hpp:111
VtolDynamics::calculateNewState
void calculateNewState(const Eigen::Vector3d &Maero, const Eigen::Vector3d &Faero, const std::vector< double > &motors, double dt_sec)
Definition: vtolDynamicsSim.cpp:526
Geometry
Definition: vtolDynamicsSim.hpp:32
VtolParameters::gyroVariance
double gyroVariance
Definition: vtolDynamicsSim.hpp:52
State::initialAttitude
Eigen::Quaterniond initialAttitude
Definition: vtolDynamicsSim.hpp:94
State::attitude
Eigen::Quaterniond attitude
Definition: vtolDynamicsSim.hpp:95
MOTORS_MAX_AMOUNT
constexpr size_t MOTORS_MAX_AMOUNT
Definition: vtolDynamicsSim.hpp:30
TablesWithCoeffs::actuatorTimeConstants
std::vector< double > actuatorTimeConstants
Definition: vtolDynamicsSim.hpp:141
State::linearAccel
Eigen::Vector3d linearAccel
Definition: vtolDynamicsSim.hpp:89
VtolDynamics::getVehiclePosition
Eigen::Vector3d getVehiclePosition() const override
Definition: vtolDynamicsSim.cpp:629
VtolParameters::mass
double mass
Definition: vtolDynamicsSim.hpp:39
Environment::gustVelocityNED
Eigen::Vector3d gustVelocityNED
Definition: vtolDynamicsSim.hpp:112
Environment::windVariance
double windVariance
Definition: vtolDynamicsSim.hpp:110
VtolDynamics::calculateCmzRudder
double calculateCmzRudder(double rudder_pos, double airspeed) const
Definition: vtolDynamicsSim.cpp:615
VtolDynamics::getVehicleAttitude
Eigen::Quaterniond getVehicleAttitude() const override
Definition: vtolDynamicsSim.cpp:642
Environment::gustVariance
double gustVariance
Definition: vtolDynamicsSim.hpp:113
VtolDynamics::land
void land() override
Definition: vtolDynamicsSim.cpp:164
VtolDynamics::calculateCSRudder
double calculateCSRudder(double rudder_pos, double airspeed) const
Definition: vtolDynamicsSim.cpp:603
VtolDynamics::setInitialVelocity
void setInitialVelocity(const Eigen::Vector3d &linearVelocity, const Eigen::Vector3d &angularVelocity)
Definition: vtolDynamicsSim.cpp:158
VtolDynamics::_servosValues
std::array< double, 3 > _servosValues
Definition: vtolDynamicsSim.hpp:236
VtolParameters::accelBias
Eigen::Vector3d accelBias
Definition: vtolDynamicsSim.hpp:60
VtolDynamics::VtolDynamics
VtolDynamics()
Definition: vtolDynamicsSim.cpp:37
VtolDynamics::calculateAerodynamics
void calculateAerodynamics(const Eigen::Vector3d &airspeed, double AoA, double AoS, const std::array< double, 3 > &servos, Eigen::Vector3d &Faero, Eigen::Vector3d &Maero)
Definition: vtolDynamicsSim.cpp:434
TablesWithCoeffs::CmxAileron
Eigen::Matrix< double, 8, 20, Eigen::RowMajor > CmxAileron
Definition: vtolDynamicsSim.hpp:135
VtolParameters::wingArea
double wingArea
Definition: vtolDynamicsSim.hpp:40
Geometry::directionCCW
bool directionCCW
Definition: vtolDynamicsSim.hpp:35
TablesWithCoeffs::AoA
Eigen::Matrix< double, 1, 47, Eigen::RowMajor > AoA
Definition: vtolDynamicsSim.hpp:122
VtolDynamics::calculateCDPolynomial
void calculateCDPolynomial(double airSpeedMod, Eigen::VectorXd &polynomialCoeffs) const
Definition: vtolDynamicsSim.cpp:587
VtolParameters::massUncertainty
double massUncertainty
Definition: vtolDynamicsSim.hpp:57
VtolDynamics::getIMUMeasurement
void getIMUMeasurement(Eigen::Vector3d &accOut, Eigen::Vector3d &gyroOut) override
Definition: vtolDynamicsSim.cpp:652
VtolParameters::actuatorMax
std::vector< double > actuatorMax
Definition: vtolDynamicsSim.hpp:45
VtolDynamics::_environment
Environment _environment
Definition: vtolDynamicsSim.hpp:241
Moments::airspeed
Eigen::Vector3d airspeed
Definition: vtolDynamicsSim.hpp:77
Forces::drug
Eigen::Vector3d drug
Definition: vtolDynamicsSim.hpp:66
VtolDynamics::calculateAnglesOfAtack
double calculateAnglesOfAtack(const Eigen::Vector3d &airSpeed) const
Definition: vtolDynamicsSim.cpp:407
TablesWithCoeffs::actuator
Eigen::Matrix< double, 20, 1, Eigen::ColMajor > actuator
Definition: vtolDynamicsSim.hpp:125
VtolDynamics::process
void process(double dt_secs, const std::vector< double > &unitless_setpoint) override
Definition: vtolDynamicsSim.cpp:300
TablesWithCoeffs::CmyPolynomial
Eigen::Matrix< double, 8, 8, Eigen::RowMajor > CmyPolynomial
Definition: vtolDynamicsSim.hpp:132


inno_vtol_dynamics
Author(s): Roman Fedorenko, Dmitry Ponomarev, Ezra Tal, Winter Guerra
autogenerated on Mon Dec 9 2024 03:13:35