From d80f8c9ba3fb742c551c38d03b7ad8958b8eefcd Mon Sep 17 00:00:00 2001 From: oberion Date: Fri, 12 Aug 2011 14:20:20 +0200 Subject: [PATCH] SenseSoar messages included --- qgroundcontrol.pro | 2 + src/uas/QGCMAVLinkUASFactory.cc | 8 + src/uas/QGCMAVLinkUASFactory.h | 1 + src/uas/senseSoarMAV.cpp | 205 ++++++++++++++++++ src/uas/senseSoarMAV.h | 28 +++ src/ui/XbeeConfigurationWindow.cpp | 19 +- .../mavlink/include/SenseSoar/SenseSoar.h | 8 +- .../mavlink/include/SenseSoar/mavlink.h | 2 +- .../SenseSoar/mavlink_msg_obs_attitude.h | 18 +- .../mavlink_msg_sensesoar_mode_ack.h | 118 ---------- .../mavlink_msg_sensesoar_mode_chng.h | 118 ---------- .../mavlink_msg_sensesoar_mode_rqst.h | 101 --------- .../mavlink_msg_sensesoar_mode_rqst_send.h | 101 --------- thirdParty/mavlink/include/common/common.h | 2 +- thirdParty/mavlink/include/common/mavlink.h | 2 +- .../mavlink/message_definitions/SenseSoar.xml | 20 +- 16 files changed, 269 insertions(+), 484 deletions(-) create mode 100644 src/uas/senseSoarMAV.cpp create mode 100644 src/uas/senseSoarMAV.h delete mode 100644 thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_ack.h delete mode 100644 thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_chng.h delete mode 100644 thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst.h delete mode 100644 thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst_send.h diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index e8240de14..65779bc2d 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -281,6 +281,7 @@ HEADERS += src/MG.h \ src/uas/SlugsMAV.h \ src/uas/PxQuadMAV.h \ src/uas/ArduPilotMegaMAV.h \ + src/uas/senseSoarMAV.h \ src/ui/watchdog/WatchdogControl.h \ src/ui/watchdog/WatchdogProcessView.h \ src/ui/watchdog/WatchdogView.h \ @@ -409,6 +410,7 @@ SOURCES += src/main.cc \ src/uas/SlugsMAV.cc \ src/uas/PxQuadMAV.cc \ src/uas/ArduPilotMegaMAV.cc \ + src/uas/senseSoarMAV.cpp \ src/ui/watchdog/WatchdogControl.cc \ src/ui/watchdog/WatchdogProcessView.cc \ src/ui/watchdog/WatchdogView.cc \ diff --git a/src/uas/QGCMAVLinkUASFactory.cc b/src/uas/QGCMAVLinkUASFactory.cc index e9081d960..29fd74add 100644 --- a/src/uas/QGCMAVLinkUASFactory.cc +++ b/src/uas/QGCMAVLinkUASFactory.cc @@ -64,6 +64,14 @@ UASInterface* QGCMAVLinkUASFactory::createUAS(MAVLinkProtocol* mavlink, LinkInte uas = mav; } break; + case MAV_AUTOPILOT_SENSESOAR: + { + senseSoarMAV* mav = new senseSoarMAV(mavlink,sysid); + mav->setSystemType((int)heartbeat->type); + connect(mavlink, SIGNAL(messageReceived(LinkInterface*, mavlink_message_t)), mav, SLOT(receiveMessage(LinkInterface*, mavlink_message_t))); + uas = mav; + break; + } default: { UAS* mav = new UAS(mavlink, sysid); mav->setSystemType((int)heartbeat->type); diff --git a/src/uas/QGCMAVLinkUASFactory.h b/src/uas/QGCMAVLinkUASFactory.h index 992ea2092..3c864a61c 100644 --- a/src/uas/QGCMAVLinkUASFactory.h +++ b/src/uas/QGCMAVLinkUASFactory.h @@ -12,6 +12,7 @@ #include "UAS.h" #include "SlugsMAV.h" #include "PxQuadMAV.h" +#include "senseSoarMAV.h" #include "ArduPilotMegaMAV.h" class QGCMAVLinkUASFactory : public QObject diff --git a/src/uas/senseSoarMAV.cpp b/src/uas/senseSoarMAV.cpp new file mode 100644 index 000000000..a133fe137 --- /dev/null +++ b/src/uas/senseSoarMAV.cpp @@ -0,0 +1,205 @@ +#include "senseSoarMAV.h" +#include + +senseSoarMAV::senseSoarMAV(MAVLinkProtocol* mavlink, int id) + : UAS(mavlink, id) +{ +} + + +senseSoarMAV::~senseSoarMAV(void) +{ +} + +void senseSoarMAV::receiveMessage(LinkInterface *link, mavlink_message_t message) +{ +#ifdef MAVLINK_ENABLED_SENSESOAR + if (message.sysid == uasId) // make sure the message is for the right UAV + { + if (!link) return; + switch (message.msgid) + { + case MAVLINK_MSG_ID_CMD_AIRSPEED_ACK: // TO DO: check for acknowledgement after sended commands + { + mavlink_cmd_airspeed_ack_t airSpeedMsg; + mavlink_msg_cmd_airspeed_ack_decode(&message,&airSpeedMsg); + break; + } + /*case MAVLINK_MSG_ID_CMD_AIRSPEED_CHNG: only sent to UAV + { + break; + }*/ + case MAVLINK_MSG_ID_FILT_ROT_VEL: // rotational velocities + { + mavlink_filt_rot_vel_t rotVelMsg; + mavlink_msg_filt_rot_vel_decode(&message,&rotVelMsg); + quint64 time = getUnixTime(); + for(unsigned char i=0;i<3;i++) + { + this->m_rotVel[i]=rotVelMsg.rotVel[i]; + } + emit valueChanged(uasId, "rollspeed", "rad/s", this->m_rotVel[0], time); + emit valueChanged(uasId, "pitchspeed", "rad/s", this->m_rotVel[1], time); + emit valueChanged(uasId, "yawspeed", "rad/s", this->m_rotVel[2], time); + emit attitudeSpeedChanged(uasId, this->m_rotVel[0], this->m_rotVel[1], this->m_rotVel[2], time); + break; + } + case MAVLINK_MSG_ID_LLC_OUT: // low level controller output + { + mavlink_llc_out_t llcMsg; + mavlink_msg_llc_out_decode(&message,&llcMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "Servo. 1", "rad", llcMsg.servoOut[0], time); + emit valueChanged(uasId, "Servo. 2", "rad", llcMsg.servoOut[1], time); + emit valueChanged(uasId, "Servo. 3", "rad", llcMsg.servoOut[2], time); + emit valueChanged(uasId, "Servo. 4", "rad", llcMsg.servoOut[3], time); + emit valueChanged(uasId, "Motor. 1", "raw", llcMsg.MotorOut[0] , time); + emit valueChanged(uasId, "Motor. 2", "raw", llcMsg.MotorOut[1], time); + break; + } + case MAVLINK_MSG_ID_OBS_AIR_TEMP: + { + mavlink_obs_air_temp_t airTMsg; + mavlink_msg_obs_air_temp_decode(&message,&airTMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "Air Temp", "°", airTMsg.airT, time); + break; + } + case MAVLINK_MSG_ID_OBS_AIR_VELOCITY: + { + mavlink_obs_air_velocity_t airVMsg; + mavlink_msg_obs_air_velocity_decode(&message,&airVMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "AirVel. mag", "m/s", airVMsg.magnitude, time); + emit valueChanged(uasId, "AirVel. AoA", "rad", airVMsg.aoa, time); + emit valueChanged(uasId, "AirVel. Slip", "rad", airVMsg.slip, time); + break; + } + case MAVLINK_MSG_ID_OBS_ATTITUDE: + { + mavlink_obs_attitude_t quatMsg; + mavlink_msg_obs_attitude_decode(&message,&quatMsg); + quint64 time = getUnixTime(); + this->quat2euler(quatMsg.quat,this->roll,this->pitch,this->yaw); + emit valueChanged(uasId, "roll", "rad", roll, time); + emit valueChanged(uasId, "pitch", "rad", pitch, time); + emit valueChanged(uasId, "yaw", "rad", yaw, time); + emit valueChanged(uasId, "roll deg", "deg", (roll/M_PI)*180.0, time); + emit valueChanged(uasId, "pitch deg", "deg", (pitch/M_PI)*180.0, time); + emit valueChanged(uasId, "heading deg", "deg", (yaw/M_PI)*180.0, time); + emit attitudeChanged(this, roll, pitch, yaw, time); + break; + } + case MAVLINK_MSG_ID_OBS_BIAS: + { + mavlink_obs_bias_t biasMsg; + mavlink_msg_obs_bias_decode(&message, &biasMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "acc. biasX", "m/s^2", biasMsg.accBias[0], time); + emit valueChanged(uasId, "acc. biasY", "m/s^2", biasMsg.accBias[1], time); + emit valueChanged(uasId, "acc. biasZ", "m/s^2", biasMsg.accBias[2], time); + emit valueChanged(uasId, "gyro. biasX", "rad/s", biasMsg.gyroBias[0], time); + emit valueChanged(uasId, "gyro. biasY", "rad/s", biasMsg.gyroBias[1], time); + emit valueChanged(uasId, "gyro. biasZ", "rad/s", biasMsg.gyroBias[2], time); + break; + } + case MAVLINK_MSG_ID_OBS_POSITION: + { + mavlink_obs_position_t posMsg; + mavlink_msg_obs_position_decode(&message, &posMsg); + quint64 time = getUnixTime(); + this->localX = posMsg.pos[0]; + this->localY = posMsg.pos[1]; + this->localZ = posMsg.pos[2]; + emit valueChanged(uasId, "x", "m", this->localX, time); + emit valueChanged(uasId, "y", "m", this->localY, time); + emit valueChanged(uasId, "z", "m", this->localZ, time); + emit localPositionChanged(this, this->localX, this->localY, this->localZ, time); + break; + } + case MAVLINK_MSG_ID_OBS_QFF: + { + mavlink_obs_qff_t qffMsg; + mavlink_msg_obs_qff_decode(&message,&qffMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "QFF", "Pa", qffMsg.qff, time); + break; + } + case MAVLINK_MSG_ID_OBS_VELOCITY: + { + mavlink_obs_velocity_t velMsg; + mavlink_msg_obs_velocity_decode(&message, &velMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "x speed", "m/s", velMsg.vel[0], time); + emit valueChanged(uasId, "y speed", "m/s", velMsg.vel[1], time); + emit valueChanged(uasId, "z speed", "m/s", velMsg.vel[2], time); + emit speedChanged(this, velMsg.vel[0], velMsg.vel[1], velMsg.vel[2], time); + break; + } + case MAVLINK_MSG_ID_OBS_WIND: + { + mavlink_obs_wind_t windMsg; + mavlink_msg_obs_wind_decode(&message, &windMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "Wind speed x", "m/s", windMsg.wind[0], time); + emit valueChanged(uasId, "Wind speed y", "m/s", windMsg.wind[1], time); + emit valueChanged(uasId, "Wind speed z", "m/s", windMsg.wind[2], time); + break; + } + case MAVLINK_MSG_ID_PM_ELEC: + { + mavlink_pm_elec_t pmMsg; + mavlink_msg_pm_elec_decode(&message, &pmMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "Battery status", "%", pmMsg.BatStat, time); + emit valueChanged(uasId, "Power consuming", "W", pmMsg.PwCons, time); + emit valueChanged(uasId, "Power generating sys1", "W", pmMsg.PwGen[0], time); + emit valueChanged(uasId, "Power generating sys2", "W", pmMsg.PwGen[1], time); + emit valueChanged(uasId, "Power generating sys3", "W", pmMsg.PwGen[2], time); + break; + } + case MAVLINK_MSG_ID_SYS_STAT: + { + mavlink_sys_stat_t statMsg; + mavlink_msg_sys_stat_decode(&message,&statMsg); + quint64 time = getUnixTime(); + emit valueChanged(uasId, "Motor1 status", "on/off", (statMsg.act & 0x01), time); + emit valueChanged(uasId, "Motor2 status", "on/off", (statMsg.act & 0x02), time); + emit valueChanged(uasId, "Servo1 status", "on/off", (statMsg.act & 0x04), time); + emit valueChanged(uasId, "Servo2 status", "on/off", (statMsg.act & 0x08), time); + emit valueChanged(uasId, "Servo3 status", "on/off", (statMsg.act & 0x10), time); + emit valueChanged(uasId, "Servo4 status", "on/off", (statMsg.act & 0x20), time); + emit valueChanged(uasId, "WiFI status", "on/off", (statMsg.mod & 0x01), time); + emit valueChanged(uasId, "RC status", "on/off", (statMsg.mod & 0x02), time); + emit valueChanged(uasId, "Magnetometer status", "on/off", (statMsg.mod & 0x04), time); + emit valueChanged(uasId, "Pressure status", "on/off", (statMsg.mod & 0x08), time); + emit valueChanged(uasId, "IMU acc status", "on/off", (statMsg.mod & 0x10), time); + emit valueChanged(uasId, "IMU gyro status", "on/off", (statMsg.mod & 0x20), time); + emit valueChanged(uasId, "Xbee strength", "%", statMsg.commRssi, time); + //emit valueChanged(uasId, "Xbee strength", "%", statMsg.gps, time); // TO DO: define gps bits + + break; + } + default: + { + // Let UAS handle the default message set + UAS::receiveMessage(link, message); + break; + } + } + } +#else + // Let UAS handle the default message set + UAS::receiveMessage(link, message); + Q_UNUSED(link); + Q_UNUSED(message); +#endif // MAVLINK_ENABLED_SENSESOAR +} + +void senseSoarMAV::quat2euler(const double *quat, double &roll, double &pitch, double &yaw) +{ + roll = std::atan2(2*(quat[0]*quat[1] + quat[2]*quat[3]),quat[0]*quat[0] - quat[1]*quat[1] - quat[2]*quat[2] + quat[3]*quat[3]); + pitch = std::asin(qMax(-1.0,qMin(1.0,2*(quat[0]*quat[2] - quat[1]*quat[3])))); + yaw = std::atan2(2*(quat[1]*quat[2] + quat[0]*quat[3]),quat[0]*quat[0] + quat[1]*quat[1] - quat[2]*quat[2] - quat[3]*quat[3]); + return; +} \ No newline at end of file diff --git a/src/uas/senseSoarMAV.h b/src/uas/senseSoarMAV.h new file mode 100644 index 000000000..8d75e5b2c --- /dev/null +++ b/src/uas/senseSoarMAV.h @@ -0,0 +1,28 @@ +#ifndef _SENSESOARMAV_H_ +#define _SENSESOARMAV_H_ + + + +#include "UAS.h" +#include "mavlink.h" +#include + + +class senseSoarMAV : public UAS +{ + Q_OBJECT + Q_INTERFACES(UASInterface) + +public: + senseSoarMAV(MAVLinkProtocol* mavlink, int id); + ~senseSoarMAV(void); +public slots: + /** @brief Receive a MAVLink message from this MAV */ + void receiveMessage(LinkInterface* link, mavlink_message_t message); +protected: + float m_rotVel[3]; // Rotational velocity in the body frame +private: + void quat2euler(const double *quat, double &roll, double &pitch, double &yaw); +}; + +#endif // _SENSESOARMAV_H_ \ No newline at end of file diff --git a/src/ui/XbeeConfigurationWindow.cpp b/src/ui/XbeeConfigurationWindow.cpp index 07e97ac8e..bf8111d3e 100644 --- a/src/ui/XbeeConfigurationWindow.cpp +++ b/src/ui/XbeeConfigurationWindow.cpp @@ -207,19 +207,10 @@ XbeeConfigurationWindow::XbeeConfigurationWindow(LinkInterface* link, QWidget *p baudLabel = new QLabel; baudLabel->setText(tr("Baut Rate")); baudBox = new QComboBox; - baudBox->addItem("1200",1200); - baudBox->addItem("2400",2400); - baudBox->addItem("4800",4800); - baudBox->addItem("9600",9600); - baudBox->addItem("19200",19200); - baudBox->addItem("38400",38400); - baudBox->addItem("57600",57600); - baudBox->setCurrentIndex(1); baudLabel->setBuddy(baudBox); portLabel = new QLabel; portLabel->setText(tr("SerialPort")); portBox = new QComboBox; - this->setupPortList(); portBox->setEditable(true); portLabel->setBuddy(portBox); actionLayout = new QGridLayout; @@ -241,6 +232,16 @@ XbeeConfigurationWindow::XbeeConfigurationWindow(LinkInterface* link, QWidget *p connect(portBox,SIGNAL(editTextChanged(QString)),this,SLOT(setPortName(QString))); connect(baudBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(setBaudRateString(QString))); + baudBox->addItem("1200",1200); + baudBox->addItem("2400",2400); + baudBox->addItem("4800",4800); + baudBox->addItem("9600",9600); + baudBox->addItem("19200",19200); + baudBox->addItem("38400",38400); + baudBox->addItem("57600",57600); + baudBox->setCurrentIndex(6); + this->setupPortList(); + portCheckTimer = new QTimer(this); portCheckTimer->setInterval(1000); connect(portCheckTimer, SIGNAL(timeout()), this, SLOT(setupPortList())); diff --git a/thirdParty/mavlink/include/SenseSoar/SenseSoar.h b/thirdParty/mavlink/include/SenseSoar/SenseSoar.h index 5100dea51..aca07a270 100644 --- a/thirdParty/mavlink/include/SenseSoar/SenseSoar.h +++ b/thirdParty/mavlink/include/SenseSoar/SenseSoar.h @@ -1,7 +1,7 @@ /** @file * @brief MAVLink comm protocol. * @see http://qgroundcontrol.org/mavlink/ - * Generated on Tuesday, August 2 2011, 15:51 UTC + * Generated on Friday, August 12 2011, 12:18 UTC */ #ifndef SENSESOAR_H #define SENSESOAR_H @@ -42,10 +42,6 @@ enum SENSESOAR_MODE // MESSAGE DEFINITIONS -#include "./mavlink_msg_sensesoar_mode_chng.h" -#include "./mavlink_msg_sensesoar_mode_ack.h" -#include "./mavlink_msg_sensesoar_mode_rqst.h" -#include "./mavlink_msg_sensesoar_mode_rqst_send.h" #include "./mavlink_msg_obs_position.h" #include "./mavlink_msg_obs_velocity.h" #include "./mavlink_msg_obs_attitude.h" @@ -65,7 +61,7 @@ enum SENSESOAR_MODE // MESSAGE LENGTHS #undef MAVLINK_MESSAGE_LENGTHS -#define MAVLINK_MESSAGE_LENGTHS { 3, 4, 8, 14, 8, 28, 3, 32, 0, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 19, 2, 23, 21, 0, 37, 26, 101, 26, 16, 32, 32, 37, 32, 11, 17, 17, 16, 18, 36, 4, 4, 2, 2, 4, 2, 2, 3, 14, 12, 18, 16, 8, 27, 25, 0, 0, 0, 0, 0, 5, 5, 26, 16, 36, 5, 6, 0, 0, 21, 0, 0, 0, 18, 20, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 1, 1, 24, 0, 12, 0, 16, 0, 12, 0, 12, 0, 24, 0, 4, 4, 12, 0, 12, 0, 20, 0, 4, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 14, 14, 51 } +#define MAVLINK_MESSAGE_LENGTHS { 3, 4, 8, 14, 8, 28, 3, 32, 0, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 0, 19, 2, 23, 21, 0, 37, 26, 101, 26, 16, 32, 32, 37, 32, 11, 17, 17, 16, 18, 36, 4, 4, 2, 2, 4, 2, 2, 3, 14, 12, 18, 16, 8, 27, 25, 0, 0, 0, 0, 0, 5, 5, 26, 16, 36, 5, 6, 0, 0, 21, 0, 0, 0, 18, 20, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 12, 0, 32, 0, 12, 0, 12, 0, 24, 0, 4, 4, 12, 0, 12, 0, 20, 0, 4, 0, 5, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 14, 14, 51 } #ifdef __cplusplus } diff --git a/thirdParty/mavlink/include/SenseSoar/mavlink.h b/thirdParty/mavlink/include/SenseSoar/mavlink.h index 00eecc658..b11a10666 100644 --- a/thirdParty/mavlink/include/SenseSoar/mavlink.h +++ b/thirdParty/mavlink/include/SenseSoar/mavlink.h @@ -1,7 +1,7 @@ /** @file * @brief MAVLink comm protocol. * @see http://pixhawk.ethz.ch/software/mavlink - * Generated on Tuesday, August 2 2011, 15:51 UTC + * Generated on Friday, August 12 2011, 12:18 UTC */ #ifndef MAVLINK_H #define MAVLINK_H diff --git a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_obs_attitude.h b/thirdParty/mavlink/include/SenseSoar/mavlink_msg_obs_attitude.h index 513a5fc0e..8b71855e6 100644 --- a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_obs_attitude.h +++ b/thirdParty/mavlink/include/SenseSoar/mavlink_msg_obs_attitude.h @@ -4,7 +4,7 @@ typedef struct __mavlink_obs_attitude_t { - float quat[4]; ///< Quaternion re;im + double quat[4]; ///< Quaternion re;im } mavlink_obs_attitude_t; @@ -20,12 +20,12 @@ typedef struct __mavlink_obs_attitude_t * @param quat Quaternion re;im * @return length of the message in bytes (excluding serial stream start sign) */ -static inline uint16_t mavlink_msg_obs_attitude_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const float* quat) +static inline uint16_t mavlink_msg_obs_attitude_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const double* quat) { uint16_t i = 0; msg->msgid = MAVLINK_MSG_ID_OBS_ATTITUDE; - i += put_array_by_index((const int8_t*)quat, sizeof(float)*4, i, msg->payload); // Quaternion re;im + i += put_array_by_index((const int8_t*)quat, sizeof(double)*4, i, msg->payload); // Quaternion re;im return mavlink_finalize_message(msg, system_id, component_id, i); } @@ -39,12 +39,12 @@ static inline uint16_t mavlink_msg_obs_attitude_pack(uint8_t system_id, uint8_t * @param quat Quaternion re;im * @return length of the message in bytes (excluding serial stream start sign) */ -static inline uint16_t mavlink_msg_obs_attitude_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const float* quat) +static inline uint16_t mavlink_msg_obs_attitude_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, const double* quat) { uint16_t i = 0; msg->msgid = MAVLINK_MSG_ID_OBS_ATTITUDE; - i += put_array_by_index((const int8_t*)quat, sizeof(float)*4, i, msg->payload); // Quaternion re;im + i += put_array_by_index((const int8_t*)quat, sizeof(double)*4, i, msg->payload); // Quaternion re;im return mavlink_finalize_message_chan(msg, system_id, component_id, chan, i); } @@ -70,7 +70,7 @@ static inline uint16_t mavlink_msg_obs_attitude_encode(uint8_t system_id, uint8_ */ #ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS -static inline void mavlink_msg_obs_attitude_send(mavlink_channel_t chan, const float* quat) +static inline void mavlink_msg_obs_attitude_send(mavlink_channel_t chan, const double* quat) { mavlink_message_t msg; mavlink_msg_obs_attitude_pack_chan(mavlink_system.sysid, mavlink_system.compid, chan, &msg, quat); @@ -85,11 +85,11 @@ static inline void mavlink_msg_obs_attitude_send(mavlink_channel_t chan, const f * * @return Quaternion re;im */ -static inline uint16_t mavlink_msg_obs_attitude_get_quat(const mavlink_message_t* msg, float* r_data) +static inline uint16_t mavlink_msg_obs_attitude_get_quat(const mavlink_message_t* msg, double* r_data) { - memcpy(r_data, msg->payload, sizeof(float)*4); - return sizeof(float)*4; + memcpy(r_data, msg->payload, sizeof(double)*4); + return sizeof(double)*4; } /** diff --git a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_ack.h b/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_ack.h deleted file mode 100644 index 991dec176..000000000 --- a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_ack.h +++ /dev/null @@ -1,118 +0,0 @@ -// MESSAGE SENSESOAR_MODE_ACK PACKING - -#define MAVLINK_MSG_ID_SENSESOAR_MODE_ACK 167 - -typedef struct __mavlink_sensesoar_mode_ack_t -{ - uint8_t mode; ///< Mode as desribed in the sensesoar_mode - uint8_t ack; ///< 0:ack, 1:nack - -} mavlink_sensesoar_mode_ack_t; - - - -/** - * @brief Pack a sensesoar_mode_ack message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * - * @param mode Mode as desribed in the sensesoar_mode - * @param ack 0:ack, 1:nack - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_ack_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, uint8_t mode, uint8_t ack) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_ACK; - - i += put_uint8_t_by_index(mode, i, msg->payload); // Mode as desribed in the sensesoar_mode - i += put_uint8_t_by_index(ack, i, msg->payload); // 0:ack, 1:nack - - return mavlink_finalize_message(msg, system_id, component_id, i); -} - -/** - * @brief Pack a sensesoar_mode_ack message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param chan The MAVLink channel this message was sent over - * @param msg The MAVLink message to compress the data into - * @param mode Mode as desribed in the sensesoar_mode - * @param ack 0:ack, 1:nack - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_ack_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, uint8_t mode, uint8_t ack) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_ACK; - - i += put_uint8_t_by_index(mode, i, msg->payload); // Mode as desribed in the sensesoar_mode - i += put_uint8_t_by_index(ack, i, msg->payload); // 0:ack, 1:nack - - return mavlink_finalize_message_chan(msg, system_id, component_id, chan, i); -} - -/** - * @brief Encode a sensesoar_mode_ack struct into a message - * - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * @param sensesoar_mode_ack C-struct to read the message contents from - */ -static inline uint16_t mavlink_msg_sensesoar_mode_ack_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sensesoar_mode_ack_t* sensesoar_mode_ack) -{ - return mavlink_msg_sensesoar_mode_ack_pack(system_id, component_id, msg, sensesoar_mode_ack->mode, sensesoar_mode_ack->ack); -} - -/** - * @brief Send a sensesoar_mode_ack message - * @param chan MAVLink channel to send the message - * - * @param mode Mode as desribed in the sensesoar_mode - * @param ack 0:ack, 1:nack - */ -#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS - -static inline void mavlink_msg_sensesoar_mode_ack_send(mavlink_channel_t chan, uint8_t mode, uint8_t ack) -{ - mavlink_message_t msg; - mavlink_msg_sensesoar_mode_ack_pack_chan(mavlink_system.sysid, mavlink_system.compid, chan, &msg, mode, ack); - mavlink_send_uart(chan, &msg); -} - -#endif -// MESSAGE SENSESOAR_MODE_ACK UNPACKING - -/** - * @brief Get field mode from sensesoar_mode_ack message - * - * @return Mode as desribed in the sensesoar_mode - */ -static inline uint8_t mavlink_msg_sensesoar_mode_ack_get_mode(const mavlink_message_t* msg) -{ - return (uint8_t)(msg->payload)[0]; -} - -/** - * @brief Get field ack from sensesoar_mode_ack message - * - * @return 0:ack, 1:nack - */ -static inline uint8_t mavlink_msg_sensesoar_mode_ack_get_ack(const mavlink_message_t* msg) -{ - return (uint8_t)(msg->payload+sizeof(uint8_t))[0]; -} - -/** - * @brief Decode a sensesoar_mode_ack message into a struct - * - * @param msg The message to decode - * @param sensesoar_mode_ack C-struct to decode the message contents into - */ -static inline void mavlink_msg_sensesoar_mode_ack_decode(const mavlink_message_t* msg, mavlink_sensesoar_mode_ack_t* sensesoar_mode_ack) -{ - sensesoar_mode_ack->mode = mavlink_msg_sensesoar_mode_ack_get_mode(msg); - sensesoar_mode_ack->ack = mavlink_msg_sensesoar_mode_ack_get_ack(msg); -} diff --git a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_chng.h b/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_chng.h deleted file mode 100644 index 06e222165..000000000 --- a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_chng.h +++ /dev/null @@ -1,118 +0,0 @@ -// MESSAGE SENSESOAR_MODE_CHNG PACKING - -#define MAVLINK_MSG_ID_SENSESOAR_MODE_CHNG 166 - -typedef struct __mavlink_sensesoar_mode_chng_t -{ - uint8_t target; ///< Target ID - uint8_t mode; ///< Mode as desribed in the sensesoar_mode - -} mavlink_sensesoar_mode_chng_t; - - - -/** - * @brief Pack a sensesoar_mode_chng message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * - * @param target Target ID - * @param mode Mode as desribed in the sensesoar_mode - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_chng_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, uint8_t target, uint8_t mode) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_CHNG; - - i += put_uint8_t_by_index(target, i, msg->payload); // Target ID - i += put_uint8_t_by_index(mode, i, msg->payload); // Mode as desribed in the sensesoar_mode - - return mavlink_finalize_message(msg, system_id, component_id, i); -} - -/** - * @brief Pack a sensesoar_mode_chng message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param chan The MAVLink channel this message was sent over - * @param msg The MAVLink message to compress the data into - * @param target Target ID - * @param mode Mode as desribed in the sensesoar_mode - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_chng_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, uint8_t target, uint8_t mode) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_CHNG; - - i += put_uint8_t_by_index(target, i, msg->payload); // Target ID - i += put_uint8_t_by_index(mode, i, msg->payload); // Mode as desribed in the sensesoar_mode - - return mavlink_finalize_message_chan(msg, system_id, component_id, chan, i); -} - -/** - * @brief Encode a sensesoar_mode_chng struct into a message - * - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * @param sensesoar_mode_chng C-struct to read the message contents from - */ -static inline uint16_t mavlink_msg_sensesoar_mode_chng_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sensesoar_mode_chng_t* sensesoar_mode_chng) -{ - return mavlink_msg_sensesoar_mode_chng_pack(system_id, component_id, msg, sensesoar_mode_chng->target, sensesoar_mode_chng->mode); -} - -/** - * @brief Send a sensesoar_mode_chng message - * @param chan MAVLink channel to send the message - * - * @param target Target ID - * @param mode Mode as desribed in the sensesoar_mode - */ -#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS - -static inline void mavlink_msg_sensesoar_mode_chng_send(mavlink_channel_t chan, uint8_t target, uint8_t mode) -{ - mavlink_message_t msg; - mavlink_msg_sensesoar_mode_chng_pack_chan(mavlink_system.sysid, mavlink_system.compid, chan, &msg, target, mode); - mavlink_send_uart(chan, &msg); -} - -#endif -// MESSAGE SENSESOAR_MODE_CHNG UNPACKING - -/** - * @brief Get field target from sensesoar_mode_chng message - * - * @return Target ID - */ -static inline uint8_t mavlink_msg_sensesoar_mode_chng_get_target(const mavlink_message_t* msg) -{ - return (uint8_t)(msg->payload)[0]; -} - -/** - * @brief Get field mode from sensesoar_mode_chng message - * - * @return Mode as desribed in the sensesoar_mode - */ -static inline uint8_t mavlink_msg_sensesoar_mode_chng_get_mode(const mavlink_message_t* msg) -{ - return (uint8_t)(msg->payload+sizeof(uint8_t))[0]; -} - -/** - * @brief Decode a sensesoar_mode_chng message into a struct - * - * @param msg The message to decode - * @param sensesoar_mode_chng C-struct to decode the message contents into - */ -static inline void mavlink_msg_sensesoar_mode_chng_decode(const mavlink_message_t* msg, mavlink_sensesoar_mode_chng_t* sensesoar_mode_chng) -{ - sensesoar_mode_chng->target = mavlink_msg_sensesoar_mode_chng_get_target(msg); - sensesoar_mode_chng->mode = mavlink_msg_sensesoar_mode_chng_get_mode(msg); -} diff --git a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst.h b/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst.h deleted file mode 100644 index 4ee23790b..000000000 --- a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst.h +++ /dev/null @@ -1,101 +0,0 @@ -// MESSAGE SENSESOAR_MODE_RQST PACKING - -#define MAVLINK_MSG_ID_SENSESOAR_MODE_RQST 168 - -typedef struct __mavlink_sensesoar_mode_rqst_t -{ - uint8_t target; ///< Target ID - -} mavlink_sensesoar_mode_rqst_t; - - - -/** - * @brief Pack a sensesoar_mode_rqst message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * - * @param target Target ID - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_rqst_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, uint8_t target) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_RQST; - - i += put_uint8_t_by_index(target, i, msg->payload); // Target ID - - return mavlink_finalize_message(msg, system_id, component_id, i); -} - -/** - * @brief Pack a sensesoar_mode_rqst message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param chan The MAVLink channel this message was sent over - * @param msg The MAVLink message to compress the data into - * @param target Target ID - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_rqst_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, uint8_t target) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_RQST; - - i += put_uint8_t_by_index(target, i, msg->payload); // Target ID - - return mavlink_finalize_message_chan(msg, system_id, component_id, chan, i); -} - -/** - * @brief Encode a sensesoar_mode_rqst struct into a message - * - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * @param sensesoar_mode_rqst C-struct to read the message contents from - */ -static inline uint16_t mavlink_msg_sensesoar_mode_rqst_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sensesoar_mode_rqst_t* sensesoar_mode_rqst) -{ - return mavlink_msg_sensesoar_mode_rqst_pack(system_id, component_id, msg, sensesoar_mode_rqst->target); -} - -/** - * @brief Send a sensesoar_mode_rqst message - * @param chan MAVLink channel to send the message - * - * @param target Target ID - */ -#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS - -static inline void mavlink_msg_sensesoar_mode_rqst_send(mavlink_channel_t chan, uint8_t target) -{ - mavlink_message_t msg; - mavlink_msg_sensesoar_mode_rqst_pack_chan(mavlink_system.sysid, mavlink_system.compid, chan, &msg, target); - mavlink_send_uart(chan, &msg); -} - -#endif -// MESSAGE SENSESOAR_MODE_RQST UNPACKING - -/** - * @brief Get field target from sensesoar_mode_rqst message - * - * @return Target ID - */ -static inline uint8_t mavlink_msg_sensesoar_mode_rqst_get_target(const mavlink_message_t* msg) -{ - return (uint8_t)(msg->payload)[0]; -} - -/** - * @brief Decode a sensesoar_mode_rqst message into a struct - * - * @param msg The message to decode - * @param sensesoar_mode_rqst C-struct to decode the message contents into - */ -static inline void mavlink_msg_sensesoar_mode_rqst_decode(const mavlink_message_t* msg, mavlink_sensesoar_mode_rqst_t* sensesoar_mode_rqst) -{ - sensesoar_mode_rqst->target = mavlink_msg_sensesoar_mode_rqst_get_target(msg); -} diff --git a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst_send.h b/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst_send.h deleted file mode 100644 index 9da1c8cf8..000000000 --- a/thirdParty/mavlink/include/SenseSoar/mavlink_msg_sensesoar_mode_rqst_send.h +++ /dev/null @@ -1,101 +0,0 @@ -// MESSAGE SENSESOAR_MODE_RQST_SEND PACKING - -#define MAVLINK_MSG_ID_SENSESOAR_MODE_RQST_SEND 169 - -typedef struct __mavlink_sensesoar_mode_rqst_send_t -{ - uint8_t mode; ///< Mode as desribed in the sensesoar_mode - -} mavlink_sensesoar_mode_rqst_send_t; - - - -/** - * @brief Pack a sensesoar_mode_rqst_send message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * - * @param mode Mode as desribed in the sensesoar_mode - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_rqst_send_pack(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, uint8_t mode) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_RQST_SEND; - - i += put_uint8_t_by_index(mode, i, msg->payload); // Mode as desribed in the sensesoar_mode - - return mavlink_finalize_message(msg, system_id, component_id, i); -} - -/** - * @brief Pack a sensesoar_mode_rqst_send message - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param chan The MAVLink channel this message was sent over - * @param msg The MAVLink message to compress the data into - * @param mode Mode as desribed in the sensesoar_mode - * @return length of the message in bytes (excluding serial stream start sign) - */ -static inline uint16_t mavlink_msg_sensesoar_mode_rqst_send_pack_chan(uint8_t system_id, uint8_t component_id, uint8_t chan, mavlink_message_t* msg, uint8_t mode) -{ - uint16_t i = 0; - msg->msgid = MAVLINK_MSG_ID_SENSESOAR_MODE_RQST_SEND; - - i += put_uint8_t_by_index(mode, i, msg->payload); // Mode as desribed in the sensesoar_mode - - return mavlink_finalize_message_chan(msg, system_id, component_id, chan, i); -} - -/** - * @brief Encode a sensesoar_mode_rqst_send struct into a message - * - * @param system_id ID of this system - * @param component_id ID of this component (e.g. 200 for IMU) - * @param msg The MAVLink message to compress the data into - * @param sensesoar_mode_rqst_send C-struct to read the message contents from - */ -static inline uint16_t mavlink_msg_sensesoar_mode_rqst_send_encode(uint8_t system_id, uint8_t component_id, mavlink_message_t* msg, const mavlink_sensesoar_mode_rqst_send_t* sensesoar_mode_rqst_send) -{ - return mavlink_msg_sensesoar_mode_rqst_send_pack(system_id, component_id, msg, sensesoar_mode_rqst_send->mode); -} - -/** - * @brief Send a sensesoar_mode_rqst_send message - * @param chan MAVLink channel to send the message - * - * @param mode Mode as desribed in the sensesoar_mode - */ -#ifdef MAVLINK_USE_CONVENIENCE_FUNCTIONS - -static inline void mavlink_msg_sensesoar_mode_rqst_send_send(mavlink_channel_t chan, uint8_t mode) -{ - mavlink_message_t msg; - mavlink_msg_sensesoar_mode_rqst_send_pack_chan(mavlink_system.sysid, mavlink_system.compid, chan, &msg, mode); - mavlink_send_uart(chan, &msg); -} - -#endif -// MESSAGE SENSESOAR_MODE_RQST_SEND UNPACKING - -/** - * @brief Get field mode from sensesoar_mode_rqst_send message - * - * @return Mode as desribed in the sensesoar_mode - */ -static inline uint8_t mavlink_msg_sensesoar_mode_rqst_send_get_mode(const mavlink_message_t* msg) -{ - return (uint8_t)(msg->payload)[0]; -} - -/** - * @brief Decode a sensesoar_mode_rqst_send message into a struct - * - * @param msg The message to decode - * @param sensesoar_mode_rqst_send C-struct to decode the message contents into - */ -static inline void mavlink_msg_sensesoar_mode_rqst_send_decode(const mavlink_message_t* msg, mavlink_sensesoar_mode_rqst_send_t* sensesoar_mode_rqst_send) -{ - sensesoar_mode_rqst_send->mode = mavlink_msg_sensesoar_mode_rqst_send_get_mode(msg); -} diff --git a/thirdParty/mavlink/include/common/common.h b/thirdParty/mavlink/include/common/common.h index c72fa264c..c92dbf1ce 100644 --- a/thirdParty/mavlink/include/common/common.h +++ b/thirdParty/mavlink/include/common/common.h @@ -1,7 +1,7 @@ /** @file * @brief MAVLink comm protocol. * @see http://qgroundcontrol.org/mavlink/ - * Generated on Tuesday, August 2 2011, 15:51 UTC + * Generated on Friday, August 12 2011, 12:18 UTC */ #ifndef COMMON_H #define COMMON_H diff --git a/thirdParty/mavlink/include/common/mavlink.h b/thirdParty/mavlink/include/common/mavlink.h index f87e4a67a..52a94a134 100644 --- a/thirdParty/mavlink/include/common/mavlink.h +++ b/thirdParty/mavlink/include/common/mavlink.h @@ -1,7 +1,7 @@ /** @file * @brief MAVLink comm protocol. * @see http://pixhawk.ethz.ch/software/mavlink - * Generated on Tuesday, August 2 2011, 15:51 UTC + * Generated on Friday, August 12 2011, 12:18 UTC */ #ifndef MAVLINK_H #define MAVLINK_H diff --git a/thirdParty/mavlink/message_definitions/SenseSoar.xml b/thirdParty/mavlink/message_definitions/SenseSoar.xml index 83a85b46c..4de96ac53 100644 --- a/thirdParty/mavlink/message_definitions/SenseSoar.xml +++ b/thirdParty/mavlink/message_definitions/SenseSoar.xml @@ -10,24 +10,6 @@ - - change flight mode of the sensesoar - Target ID - Mode as desribed in the sensesoar_mode - - - accept change of mode - Mode as desribed in the sensesoar_mode - 0:ack, 1:nack - - - request for sending current flight mode - Target ID - - - sending current flight mode - Mode as desribed in the sensesoar_mode - Position estimate of the observer in NED inertial frame Position @@ -38,7 +20,7 @@ attitude estimate of the observer - Quaternion re;im + Quaternion re;im Wind estimate in NED inertial frame -- 2.22.0