24 attitudeSensor(nh,
"/uav/attitude", 0.005),
25 pressureSensor(nh,
"/uav/static_pressure", 0.05),
26 temperatureSensor(nh,
"/uav/static_temperature", 0.05),
27 diffPressureSensor(nh,
"/uav/raw_air_data", 0.05),
28 iceStatusSensor(nh,
"/uav/ice", 0.25),
29 imuSensor(nh,
"/uav/imu", 0.00333),
30 velocitySensor_(nh,
"/uav/velocity", 0.05),
31 gpsSensor(nh,
"/uav/gps_point", 0.1),
32 magSensor(nh,
"/uav/mag", 0.03),
33 escStatusSensor(nh,
"/uav/esc_status", 0.25),
34 fuelTankSensor(nh,
"/uav/fuel_tank", 2.0),
35 batteryInfoSensor(nh,
"/uav/battery", 1.0)
39 int8_t
Sensors::init(
const std::shared_ptr<UavDynamicsSimBase>& uavDynamicsSim) {
45 const std::string SIM_PARAMS_PATH =
"/uav/sim_params/";
51 ROS_ERROR(
"Sensors: lat_ref, lon_ref or alt_ref in not present.");
55 if (
ros::param::get(SIM_PARAMS_PATH +
"esc_status", isEnabled) && isEnabled) {
59 if (
ros::param::get(SIM_PARAMS_PATH +
"ice_status", isEnabled) && isEnabled) {
63 if (
ros::param::get(SIM_PARAMS_PATH +
"fuel_tank_status", isEnabled) && isEnabled) {
67 if (
ros::param::get(SIM_PARAMS_PATH +
"battery_status", isEnabled) && isEnabled) {
103 Eigen::Vector3d gpsPosition;
104 Eigen::Vector3d enuPosition;
105 Eigen::Vector3d linVelNed;
106 Eigen::Vector3d accFrd;
107 Eigen::Vector3d gyroFrd;
108 Eigen::Vector3d angVelFrd;
109 Eigen::Quaterniond attitudeFrdToNed;
116 attitudeFrdToNed = attitude;
118 enuPosition = position;
126 &gpsPosition[0], &gpsPosition[1], &gpsPosition[2]);
129 float temperatureKelvin;
130 float absPressureHpa;
131 float diffPressureHpa;
133 temperatureKelvin, absPressureHpa, diffPressureHpa);
145 std::vector<double> motorsRpm;
148 if(motorsRpm.size() == 5){
153 static double fuelLevelPercentage = 100.0;
154 if(motorsRpm.size() == 5 && motorsRpm[4] >= 1) {
155 fuelLevelPercentage -= 0.002;
156 if(fuelLevelPercentage < 0) {
157 fuelLevelPercentage = 0;
Eigen::Vector3d enuToNed(Eigen::Vector3d enu)
bool publish(const Eigen::Quaterniond &attitudeFrdToNed)
Eigen::Vector3d nedToEnu(Eigen::Vector3d ned)
void EstimateAtmosphere(const Eigen::Vector3d &gpsPosition, const Eigen::Vector3d &linVelNed, float &temperatureKelvin, float &absPressureHpa, float &diffPressureHpa)
Eigen::Vector3d fluToFrd(Eigen::Vector3d flu)
int8_t init(const std::shared_ptr< UavDynamicsSimBase > &uavDynamicsSim)
bool publish(float staticTemperature)
bool publish(float percentage)
bool publish(const std::vector< double > &rpm)
IceStatusSensor iceStatusSensor
bool publish(const Eigen::Vector3d &geoPosition, const Eigen::Quaterniond &attitudeFrdToNed)
FuelTankSensor fuelTankSensor
bool publish(const Eigen::Vector3d &linVelNed, const Eigen::Vector3d &angVelFrd)
void publishStateToCommunicator(uint8_t dynamicsNotation)
Eigen::Quaterniond fluEnuToFrdNed(const Eigen::Quaterniond &q_flu_to_enu)
std::shared_ptr< UavDynamicsSimBase > _uavDynamicsSim
bool publish(float staticPressureHpa)
ROSCPP_DECL bool get(const std::string &key, std::string &s)
BatteryInfoSensor batteryInfoSensor
Sensors(ros::NodeHandle *nh)
DiffPressureSensor diffPressureSensor
bool publish(float diffPressureHpa)
bool publish(const Eigen::Vector3d &accFrd, const Eigen::Vector3d &gyroFrd)
PressureSensor pressureSensor
geodetic_converter::GeodeticConverter geodeticConverter
bool publish(const Eigen::Vector3d &gpsPosition)
TemperatureSensor temperatureSensor
VelocitySensor velocitySensor_
EscStatusSensor escStatusSensor
AttitudeSensor attitudeSensor