Go to the documentation of this file.
22 #include <boost/algorithm/clamp.hpp>
27 attitudeSensor(nh,
"/uav/attitude", 0.005),
28 pressureSensor(nh,
"/uav/static_pressure", 0.05),
29 temperatureSensor(nh,
"/uav/static_temperature", 0.05),
30 diffPressureSensor(nh,
"/uav/raw_air_data", 0.05),
31 iceStatusSensor(nh,
"/uav/ice", 0.25),
32 imuSensor(nh,
"/uav/imu", 0.00333),
33 velocitySensor_(nh,
"/uav/velocity", 0.05),
34 gpsSensor(nh,
"/uav/gps_point", 0.1),
35 magSensor(nh,
"/uav/mag", 0.03),
36 escStatusSensor(nh,
"/uav/esc_status", 0.25),
37 fuelTankSensor(nh,
"/uav/fuel_tank", 1.0),
38 batteryInfoSensor(nh,
"/uav/battery", 1.0)
42 int8_t
Sensors::init(
const std::shared_ptr<UavDynamicsSimBase>& uavDynamicsSim) {
48 const std::string SIM_PARAMS_PATH =
"/uav/sim_params/";
54 ROS_ERROR(
"Sensors: lat_ref, lon_ref or alt_ref in not present.");
58 if (
ros::param::get(SIM_PARAMS_PATH +
"esc_status", isEnabled) && isEnabled) {
62 if (
ros::param::get(SIM_PARAMS_PATH +
"ice_status", isEnabled) && isEnabled) {
66 if (
ros::param::get(SIM_PARAMS_PATH +
"fuel_tank_status", isEnabled) && isEnabled) {
70 if (
ros::param::get(SIM_PARAMS_PATH +
"battery_status", isEnabled) && isEnabled) {
107 Eigen::Vector3d gpsPosition;
108 Eigen::Vector3d enuPosition;
109 Eigen::Vector3d linVelNed;
110 Eigen::Vector3d airspeedFrd;
111 Eigen::Vector3d accFrd;
112 Eigen::Vector3d gyroFrd;
113 Eigen::Vector3d angVelFrd;
114 Eigen::Quaterniond attitudeFrdToNed;
121 attitudeFrdToNed = attitude;
122 airspeedFrd = airspeed;
124 enuPosition = position;
133 &gpsPosition[0], &gpsPosition[1], &gpsPosition[2]);
136 float temperatureKelvin;
137 float absPressureHpa;
138 float diffPressureHpa;
140 temperatureKelvin, absPressureHpa, diffPressureHpa);
152 std::vector<double> motorsRpm;
155 if(motorsRpm.size() >= 5){
160 static double trueFuelLevelPct = 80.0;
161 if(motorsRpm[4] > 0.0) {
162 trueFuelLevelPct -= 0.0000002 * motorsRpm[4];
163 if(trueFuelLevelPct < 0) {
164 trueFuelLevelPct = 0;
167 auto fuelNoise = (float)(std::rand() % 26 - 13);
168 float measuredFuelLevelPct = boost::algorithm::clamp(trueFuelLevelPct + fuelNoise, 0.0, 100.0);
Eigen::Quaterniond fluEnuToFrdNed(const Eigen::Quaterniond &q_flu_to_enu)
bool publish(const Eigen::Vector3d &gpsPosition)
TemperatureSensor temperatureSensor
bool publish(float staticPressureHpa)
bool publish(float staticTemperature)
ROSCPP_DECL bool get(const std::string &key, bool &b)
EscStatusSensor escStatusSensor
bool publish(float percentage)
void publishStateToCommunicator(uint8_t dynamicsNotation)
CoordinateConverter geodeticConverter
AttitudeSensor attitudeSensor
Eigen::Quaterniond frdNedTofluEnu(const Eigen::Quaterniond &q_frd_to_ned)
IceStatusSensor iceStatusSensor
Eigen::Vector3d fluToFrd(Eigen::Vector3d flu)
BatteryInfoSensor batteryInfoSensor
DiffPressureSensor diffPressureSensor
bool publish(const Eigen::Quaterniond &attitudeFrdToNed)
VelocitySensor velocitySensor_
FuelTankSensor fuelTankSensor
void setInitialValues(double lat, double lon, double alt)
bool publish(const Eigen::Vector3d &geoPosition, const Eigen::Quaterniond &attitudeFrdToNed)
bool publish(float diffPressureHpa)
bool publish(const Eigen::Vector3d &linVelNed, const Eigen::Vector3d &angVelFrd)
static const constexpr uint8_t PX4_NED_FRD
static const constexpr uint8_t ROS_ENU_FLU
void enuToGeodetic(double enu_x, double enu_y, double enu_z, double *lat, double *lon, double *alt) const
bool publish(const std::vector< double > &rpm)
PressureSensor pressureSensor
void EstimateAtmosphere(const Eigen::Vector3d &gpsPosition, const Eigen::Vector3d &linVelNed, float &temperatureKelvin, float &absPressureHpa, float &diffPressureHpa)
Sensors(ros::NodeHandle *nh)
std::shared_ptr< UavDynamicsSimBase > _uavDynamicsSim
Eigen::Vector3d nedToEnu(Eigen::Vector3d ned)
bool publish(const Eigen::Vector3d &accFrd, const Eigen::Vector3d &gyroFrd)
Eigen::Vector3d enuToNed(Eigen::Vector3d enu)
int8_t init(const std::shared_ptr< UavDynamicsSimBase > &uavDynamicsSim)
inno_vtol_dynamics
Author(s): Roman Fedorenko, Dmitry Ponomarev, Ezra Tal, Winter Guerra
autogenerated on Mon Dec 9 2024 03:13:35