mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
attituderaw: Replace HeadingActual with AttitudeRaw
AttitudeRaw now includes: - magnetometers XYZ (in mG) - gyros XYZ (raw ADC samples) - accelerometers XYZ (raw ADC samples) - placeholder for gyro temp sensors (read as zero for now) git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@1289 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
5d635d4233
commit
c3e509c2cb
@ -36,7 +36,6 @@ struct mag_sensor {
|
||||
uint8_t id[4];
|
||||
struct {
|
||||
int16_t axis[3];
|
||||
float heading;
|
||||
} raw;
|
||||
};
|
||||
|
||||
@ -48,6 +47,18 @@ struct accel_sensor {
|
||||
} raw;
|
||||
};
|
||||
|
||||
struct gyro_sensor {
|
||||
struct {
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
uint16_t z;
|
||||
} raw;
|
||||
struct {
|
||||
uint16_t xy;
|
||||
uint16_t z;
|
||||
} temp;
|
||||
};
|
||||
|
||||
struct attitude_solution {
|
||||
struct {
|
||||
float q1;
|
||||
@ -65,6 +76,8 @@ struct attitude_solution {
|
||||
|
||||
static struct mag_sensor mag_data;
|
||||
static struct accel_sensor accel_data;
|
||||
static struct gyro_sensor gyro_data;
|
||||
|
||||
static struct attitude_solution attitude_data = {
|
||||
.quaternion = {
|
||||
.q1 = 1.011,
|
||||
@ -137,14 +150,23 @@ int main()
|
||||
// Get magnetic readings
|
||||
PIOS_HMC5843_ReadMag(mag_data.raw.axis);
|
||||
|
||||
// Calculate the heading
|
||||
mag_data.raw.heading = atan2((double)(mag_data.raw.axis[0]), (double)(-1 * mag_data.raw.axis[1])) * (180 / M_PI);
|
||||
if(mag_data.raw.heading < 0) mag_data.raw.heading += 360;
|
||||
|
||||
// Test ADC
|
||||
accel_data.raw.x = PIOS_ADC_PinGet(0);
|
||||
accel_data.raw.x = PIOS_ADC_PinGet(2);
|
||||
accel_data.raw.y = PIOS_ADC_PinGet(1);
|
||||
accel_data.raw.z = PIOS_ADC_PinGet(2);
|
||||
accel_data.raw.z = PIOS_ADC_PinGet(0);
|
||||
|
||||
gyro_data.raw.x = PIOS_ADC_PinGet(3);
|
||||
gyro_data.raw.y = PIOS_ADC_PinGet(4);
|
||||
gyro_data.raw.z = PIOS_ADC_PinGet(5);
|
||||
|
||||
#if 0
|
||||
/* Turn this on when the temperature ADCs are configured */
|
||||
gyro_data.temp.xy = PIOS_ADC_PinGet(6);
|
||||
gyro_data.temp.z = PIOS_ADC_PinGet(7);
|
||||
#else
|
||||
gyro_data.temp.xy = 0;
|
||||
gyro_data.temp.z = 0;
|
||||
#endif
|
||||
//PIOS_COM_SendFormattedString(PIOS_COM_AUX, "ADC Values: %d,%d,%d,%d,%d,%d\r\n", PIOS_ADC_PinGet(0), PIOS_ADC_PinGet(1), PIOS_ADC_PinGet(2), PIOS_ADC_PinGet(3), PIOS_ADC_PinGet(4), PIOS_ADC_PinGet(5));
|
||||
|
||||
|
||||
@ -243,13 +265,23 @@ void process_spi_request(void)
|
||||
dump_spi_message(PIOS_COM_AUX, "I", (uint8_t *)&user_tx_v1, sizeof(user_tx_v1));
|
||||
lfsm_user_set_tx_v1 (&user_tx_v1);
|
||||
break;
|
||||
case OPAHRS_MSG_V1_REQ_HEADING:
|
||||
opahrs_msg_v1_init_user_tx (&user_tx_v1, OPAHRS_MSG_V1_RSP_HEADING);
|
||||
user_tx_v1.payload.user.v.rsp.heading.raw_mag.x = mag_data.raw.axis[0];
|
||||
user_tx_v1.payload.user.v.rsp.heading.raw_mag.y = mag_data.raw.axis[1];
|
||||
user_tx_v1.payload.user.v.rsp.heading.raw_mag.z = mag_data.raw.axis[2];
|
||||
user_tx_v1.payload.user.v.rsp.heading.heading = mag_data.raw.heading;
|
||||
dump_spi_message(PIOS_COM_AUX, "H", (uint8_t *)&user_tx_v1, sizeof(user_tx_v1));
|
||||
case OPAHRS_MSG_V1_REQ_ATTITUDERAW:
|
||||
opahrs_msg_v1_init_user_tx (&user_tx_v1, OPAHRS_MSG_V1_RSP_ATTITUDERAW);
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.mags.x = mag_data.raw.axis[0];
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.mags.y = mag_data.raw.axis[1];
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.mags.z = mag_data.raw.axis[2];
|
||||
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.gyros.x = gyro_data.raw.x;
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.gyros.y = gyro_data.raw.y;
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.gyros.z = gyro_data.raw.z;
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.gyros.xy_temp = gyro_data.temp.xy;
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.gyros.z_temp = gyro_data.temp.z;
|
||||
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.accels.x = accel_data.raw.x;
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.accels.y = accel_data.raw.y;
|
||||
user_tx_v1.payload.user.v.rsp.attituderaw.accels.z = accel_data.raw.z;
|
||||
|
||||
dump_spi_message(PIOS_COM_AUX, "R", (uint8_t *)&user_tx_v1, sizeof(user_tx_v1));
|
||||
lfsm_user_set_tx_v1 (&user_tx_v1);
|
||||
break;
|
||||
case OPAHRS_MSG_V1_REQ_ATTITUDE:
|
||||
|
@ -118,105 +118,14 @@ TIM8 | | | |
|
||||
#define PIOS_COM_AUX 0
|
||||
#define PIOS_COM_DEBUG PIOS_COM_AUX
|
||||
|
||||
#if 0
|
||||
//-------------------------
|
||||
// ADC
|
||||
// PIOS_ADC_PinGet(0) = Accel Z
|
||||
// PIOS_ADC_PinGet(1) =
|
||||
// PIOS_ADC_PinGet(2) =
|
||||
// PIOS_ADC_PinGet(3) =
|
||||
// PIOS_ADC_PinGet(4) = Accel ?
|
||||
// PIOS_ADC_PinGet(5) =
|
||||
// PIOS_ADC_PinGet(6) =
|
||||
// PIOS_ADC_PinGet(7) =
|
||||
//-------------------------
|
||||
//#define PIOS_ADC_OVERSAMPLING_RATE 1
|
||||
#define PIOS_ADC_USE_TEMP_SENSOR 0
|
||||
#define PIOS_ADC_TEMP_SENSOR_ADC ADC1
|
||||
#define PIOS_ADC_TEMP_SENSOR_ADC_CHANNEL 1
|
||||
|
||||
#define PIOS_ADC_PIN1_GPIO_PORT GPIOA // PA0 (Accel Z)
|
||||
#define PIOS_ADC_PIN1_GPIO_PIN GPIO_Pin_0 // ADC12_IN0
|
||||
#define PIOS_ADC_PIN1_GPIO_CHANNEL ADC_Channel_0
|
||||
#define PIOS_ADC_PIN1_ADC ADC1
|
||||
#define PIOS_ADC_PIN1_ADC_NUMBER 1
|
||||
|
||||
#define PIOS_ADC_PIN2_GPIO_PORT GPIOA // PA1 (Accel Y)
|
||||
#define PIOS_ADC_PIN2_GPIO_PIN GPIO_Pin_1 // ADC123_IN1
|
||||
#define PIOS_ADC_PIN2_GPIO_CHANNEL ADC_Channel_1
|
||||
#define PIOS_ADC_PIN2_ADC ADC1
|
||||
#define PIOS_ADC_PIN2_ADC_NUMBER 2
|
||||
|
||||
#define PIOS_ADC_PIN3_GPIO_PORT GPIOA // PA1 (Accel X)
|
||||
#define PIOS_ADC_PIN3_GPIO_PIN GPIO_Pin_2 // ADC12_IN2
|
||||
#define PIOS_ADC_PIN3_GPIO_CHANNEL ADC_Channel_2
|
||||
#define PIOS_ADC_PIN3_ADC ADC1
|
||||
#define PIOS_ADC_PIN3_ADC_NUMBER 3
|
||||
|
||||
#define PIOS_ADC_PIN4_GPIO_PORT GPIOA // PA4 (Gyro X)
|
||||
#define PIOS_ADC_PIN4_GPIO_PIN GPIO_Pin_4 // ADC12_IN4
|
||||
#define PIOS_ADC_PIN4_GPIO_CHANNEL ADC_Channel_4
|
||||
#define PIOS_ADC_PIN4_ADC ADC1
|
||||
#define PIOS_ADC_PIN4_ADC_NUMBER 4
|
||||
|
||||
#define PIOS_ADC_PIN5_GPIO_PORT GPIOA // PA5 (Gyro Y)
|
||||
#define PIOS_ADC_PIN5_GPIO_PIN GPIO_Pin_5 // ADC12_IN5
|
||||
#define PIOS_ADC_PIN5_GPIO_CHANNEL ADC_Channel_5
|
||||
#define PIOS_ADC_PIN5_ADC ADC2
|
||||
#define PIOS_ADC_PIN5_ADC_NUMBER 1
|
||||
|
||||
#define PIOS_ADC_PIN6_GPIO_PORT GPIOA // PA6 (XY Temp)
|
||||
#define PIOS_ADC_PIN6_GPIO_PIN GPIO_Pin_6 // ADC12_IN6
|
||||
#define PIOS_ADC_PIN6_GPIO_CHANNEL ADC_Channel_6
|
||||
#define PIOS_ADC_PIN6_ADC ADC2
|
||||
#define PIOS_ADC_PIN6_ADC_NUMBER 2
|
||||
|
||||
#define PIOS_ADC_PIN7_GPIO_PORT GPIOA // PA7 (Gyro Z)
|
||||
#define PIOS_ADC_PIN7_GPIO_PIN GPIO_Pin_7 // ADC12_IN7
|
||||
#define PIOS_ADC_PIN7_GPIO_CHANNEL ADC_Channel_7
|
||||
#define PIOS_ADC_PIN7_ADC ADC2
|
||||
#define PIOS_ADC_PIN7_ADC_NUMBER 3
|
||||
|
||||
#define PIOS_ADC_PIN8_GPIO_PORT GPIOB // PB1 (Z Temp)
|
||||
#define PIOS_ADC_PIN8_GPIO_PIN GPIO_Pin_1 // ADC12_IN9
|
||||
#define PIOS_ADC_PIN8_GPIO_CHANNEL ADC_Channel_9
|
||||
#define PIOS_ADC_PIN8_ADC ADC2
|
||||
#define PIOS_ADC_PIN8_ADC_NUMBER 4
|
||||
|
||||
#define PIOS_ADC_NUM_PINS 8
|
||||
|
||||
#define PIOS_ADC_PORTS { PIOS_ADC_PIN1_GPIO_PORT, PIOS_ADC_PIN2_GPIO_PORT, PIOS_ADC_PIN3_GPIO_PORT, PIOS_ADC_PIN4_GPIO_PORT, PIOS_ADC_PIN5_GPIO_PORT, PIOS_ADC_PIN6_GPIO_PORT, PIOS_ADC_PIN7_GPIO_PORT, PIOS_ADC_PIN8_GPIO_PORT }
|
||||
#define PIOS_ADC_PINS { PIOS_ADC_PIN1_GPIO_PIN, PIOS_ADC_PIN2_GPIO_PIN, PIOS_ADC_PIN3_GPIO_PIN, PIOS_ADC_PIN4_GPIO_PIN, PIOS_ADC_PIN5_GPIO_PIN, PIOS_ADC_PIN6_GPIO_PIN, PIOS_ADC_PIN7_GPIO_PIN, PIOS_ADC_PIN8_GPIO_PIN }
|
||||
#define PIOS_ADC_CHANNELS { PIOS_ADC_PIN1_GPIO_CHANNEL, PIOS_ADC_PIN2_GPIO_CHANNEL, PIOS_ADC_PIN3_GPIO_CHANNEL, PIOS_ADC_PIN4_GPIO_CHANNEL, PIOS_ADC_PIN5_GPIO_CHANNEL, PIOS_ADC_PIN6_GPIO_CHANNEL, PIOS_ADC_PIN7_GPIO_CHANNEL, PIOS_ADC_PIN8_GPIO_CHANNEL }
|
||||
#define PIOS_ADC_MAPPING { PIOS_ADC_PIN1_ADC, PIOS_ADC_PIN2_ADC, PIOS_ADC_PIN3_ADC, PIOS_ADC_PIN4_ADC, PIOS_ADC_PIN5_ADC, PIOS_ADC_PIN6_ADC, PIOS_ADC_PIN7_ADC, PIOS_ADC_PIN8_ADC }
|
||||
#define PIOS_ADC_CHANNEL_MAPPING { PIOS_ADC_PIN1_ADC_NUMBER, PIOS_ADC_PIN2_ADC_NUMBER, PIOS_ADC_PIN3_ADC_NUMBER, PIOS_ADC_PIN4_ADC_NUMBER, PIOS_ADC_PIN5_ADC_NUMBER, PIOS_ADC_PIN6_ADC_NUMBER, PIOS_ADC_PIN7_ADC_NUMBER, PIOS_ADC_PIN8_ADC_NUMBER }
|
||||
#define PIOS_ADC_NUM_CHANNELS (PIOS_ADC_NUM_PINS + PIOS_ADC_USE_TEMP_SENSOR)
|
||||
#define PIOS_ADC_NUM_ADC_CHANNELS 2
|
||||
#define PIOS_ADC_USE_ADC2 1
|
||||
#define PIOS_ADC_CLOCK_FUNCTION RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_ADC2, ENABLE)
|
||||
#define PIOS_ADC_ADCCLK RCC_PCLK2_Div8
|
||||
/* RCC_PCLK2_Div2: ADC clock = PCLK2/2 */
|
||||
/* RCC_PCLK2_Div4: ADC clock = PCLK2/4 */
|
||||
/* RCC_PCLK2_Div6: ADC clock = PCLK2/6 */
|
||||
/* RCC_PCLK2_Div8: ADC clock = PCLK2/8 */
|
||||
#define PIOS_ADC_SAMPLE_TIME ADC_SampleTime_239Cycles5
|
||||
/* Sample time: */
|
||||
/* With an ADCCLK = 14 MHz and a sampling time of 293.5 cycles: */
|
||||
/* Tconv = 239.5 + 12.5 = 252 cycles = 18<31>s */
|
||||
/* (1 / (ADCCLK / CYCLES)) = Sample Time (<28>S) */
|
||||
#define PIOS_ADC_IRQ_PRIO PIOS_IRQ_PRIO_HIGH
|
||||
#endif
|
||||
|
||||
//-------------------------
|
||||
// ADC
|
||||
// PIOS_ADC_PinGet(0) = Accel Z
|
||||
// PIOS_ADC_PinGet(1) =
|
||||
// PIOS_ADC_PinGet(2) =
|
||||
// PIOS_ADC_PinGet(3) =
|
||||
// PIOS_ADC_PinGet(4) = Accel ?
|
||||
// PIOS_ADC_PinGet(5) =
|
||||
// PIOS_ADC_PinGet(6) =
|
||||
// PIOS_ADC_PinGet(7) =
|
||||
// PIOS_ADC_PinGet(1) = Accel Y
|
||||
// PIOS_ADC_PinGet(2) = Accel X
|
||||
// PIOS_ADC_PinGet(3) = Gyro X
|
||||
// PIOS_ADC_PinGet(4) = Gyro Y
|
||||
// PIOS_ADC_PinGet(5) = Gyro Z
|
||||
//-------------------------
|
||||
//#define PIOS_ADC_OVERSAMPLING_RATE 1
|
||||
#define PIOS_ADC_USE_TEMP_SENSOR 0
|
||||
|
@ -167,7 +167,7 @@ SRC += $(OPUAVOBJ)/flightsituationactual.c
|
||||
SRC += $(OPUAVOBJ)/navigationsettings.c
|
||||
SRC += $(OPUAVOBJ)/navigationdesired.c
|
||||
SRC += $(OPUAVOBJ)/flightbatterystate.c
|
||||
SRC += $(OPUAVOBJ)/headingactual.c
|
||||
SRC += $(OPUAVOBJ)/attituderaw.c
|
||||
endif
|
||||
|
||||
## PIOS Hardware (STM32F10x)
|
||||
|
@ -4,7 +4,7 @@
|
||||
* @{
|
||||
* @addtogroup AHRSCommsModule AHRSComms Module
|
||||
* @brief Handles communication with AHRS and updating position
|
||||
* Specifically updates the the @ref AttitudeActual "AttitudeActual" and @ref HeadingActual "HeadingActual" settings objects
|
||||
* Specifically updates the the @ref AttitudeActual "AttitudeActual" and @ref AttitudeRaw "AttitudeRaw" settings objects
|
||||
* @{
|
||||
*
|
||||
* @file ahrs_comms.c
|
||||
@ -53,7 +53,7 @@
|
||||
#include "ahrs_comms.h"
|
||||
#include "attitudeactual.h"
|
||||
#include "attitudesettings.h"
|
||||
#include "headingactual.h"
|
||||
#include "attituderaw.h"
|
||||
#include "ahrsstatus.h"
|
||||
#include "alarms.h"
|
||||
|
||||
@ -72,7 +72,7 @@ static xTaskHandle taskHandle;
|
||||
// Private functions
|
||||
static void ahrscommsTask(void* parameters);
|
||||
static void update_attitude_actual(struct opahrs_msg_v1_rsp_attitude * attitude);
|
||||
static void update_heading_actual(struct opahrs_msg_v1_rsp_heading * heading);
|
||||
static void update_attitude_raw(struct opahrs_msg_v1_rsp_attituderaw * attituderaw);
|
||||
static void update_ahrs_status(struct opahrs_msg_v1_rsp_serial * serial);
|
||||
|
||||
/**
|
||||
@ -131,8 +131,8 @@ static void ahrscommsTask(void* parameters)
|
||||
break;
|
||||
}
|
||||
|
||||
if (PIOS_OPAHRS_GetHeading(&rsp) == OPAHRS_RESULT_OK) {
|
||||
update_heading_actual(&(rsp.payload.user.v.rsp.heading));
|
||||
if (PIOS_OPAHRS_GetAttitudeRaw(&rsp) == OPAHRS_RESULT_OK) {
|
||||
update_attitude_raw(&(rsp.payload.user.v.rsp.attituderaw));
|
||||
} else {
|
||||
/* Comms error */
|
||||
break;
|
||||
@ -160,17 +160,26 @@ static void update_attitude_actual(struct opahrs_msg_v1_rsp_attitude * attitude)
|
||||
AttitudeActualSet(&data);
|
||||
}
|
||||
|
||||
static void update_heading_actual(struct opahrs_msg_v1_rsp_heading * heading)
|
||||
static void update_attitude_raw(struct opahrs_msg_v1_rsp_attituderaw * attituderaw)
|
||||
{
|
||||
HeadingActualData data;
|
||||
AttitudeRawData data;
|
||||
|
||||
data.raw[HEADINGACTUAL_RAW_X] = heading->raw_mag.x;
|
||||
data.raw[HEADINGACTUAL_RAW_Y] = heading->raw_mag.y;
|
||||
data.raw[HEADINGACTUAL_RAW_Z] = heading->raw_mag.z;
|
||||
data.magnetometers[ATTITUDERAW_MAGNETOMETERS_X] = attituderaw->mags.x;
|
||||
data.magnetometers[ATTITUDERAW_MAGNETOMETERS_Y] = attituderaw->mags.y;
|
||||
data.magnetometers[ATTITUDERAW_MAGNETOMETERS_Z] = attituderaw->mags.z;
|
||||
|
||||
data.gyros[ATTITUDERAW_GYROS_X] = attituderaw->gyros.x;
|
||||
data.gyros[ATTITUDERAW_GYROS_Y] = attituderaw->gyros.y;
|
||||
data.gyros[ATTITUDERAW_GYROS_Z] = attituderaw->gyros.z;
|
||||
|
||||
data.gyrotemp[ATTITUDERAW_GYROTEMP_XY] = attituderaw->gyros.xy_temp;
|
||||
data.gyrotemp[ATTITUDERAW_GYROTEMP_Z] = attituderaw->gyros.z_temp;
|
||||
|
||||
data.accelerometers[ATTITUDERAW_ACCELEROMETERS_X] = attituderaw->accels.x;
|
||||
data.accelerometers[ATTITUDERAW_ACCELEROMETERS_Y] = attituderaw->accels.y;
|
||||
data.accelerometers[ATTITUDERAW_ACCELEROMETERS_Z] = attituderaw->accels.z;
|
||||
|
||||
data.heading = heading->heading;
|
||||
|
||||
HeadingActualSet(&data);
|
||||
AttitudeRawSet(&data);
|
||||
}
|
||||
|
||||
static void update_ahrs_status(struct opahrs_msg_v1_rsp_serial * serial)
|
||||
@ -190,4 +199,4 @@ static void update_ahrs_status(struct opahrs_msg_v1_rsp_serial * serial)
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
*/
|
||||
*/
|
||||
|
@ -1,12 +1,12 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file headingactual.c
|
||||
* @file attituderaw.c
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @brief Implementation of the HeadingActual object. This file has been
|
||||
* @brief Implementation of the AttitudeRaw object. This file has been
|
||||
* automatically generated by the UAVObjectGenerator.
|
||||
*
|
||||
* @note Object definition file: headingactual.xml.
|
||||
* @note Object definition file: attituderaw.xml.
|
||||
* This is an automatically generated file.
|
||||
* DO NOT modify manually.
|
||||
*
|
||||
@ -30,7 +30,7 @@
|
||||
*/
|
||||
|
||||
#include "openpilot.h"
|
||||
#include "headingactual.h"
|
||||
#include "attituderaw.h"
|
||||
|
||||
// Private variables
|
||||
static UAVObjHandle handle;
|
||||
@ -43,11 +43,11 @@ static void setDefaults(UAVObjHandle obj, uint16_t instId);
|
||||
* \return 0 Success
|
||||
* \return -1 Failure
|
||||
*/
|
||||
int32_t HeadingActualInitialize()
|
||||
int32_t AttitudeRawInitialize()
|
||||
{
|
||||
// Register object with the object manager
|
||||
handle = UAVObjRegister(HEADINGACTUAL_OBJID, HEADINGACTUAL_NAME, HEADINGACTUAL_METANAME, 0,
|
||||
HEADINGACTUAL_ISSINGLEINST, HEADINGACTUAL_ISSETTINGS, HEADINGACTUAL_NUMBYTES, &setDefaults);
|
||||
handle = UAVObjRegister(ATTITUDERAW_OBJID, ATTITUDERAW_NAME, ATTITUDERAW_METANAME, 0,
|
||||
ATTITUDERAW_ISSINGLEINST, ATTITUDERAW_ISSETTINGS, ATTITUDERAW_NUMBYTES, &setDefaults);
|
||||
|
||||
// Done
|
||||
if (handle != 0)
|
||||
@ -67,12 +67,12 @@ int32_t HeadingActualInitialize()
|
||||
*/
|
||||
static void setDefaults(UAVObjHandle obj, uint16_t instId)
|
||||
{
|
||||
HeadingActualData data;
|
||||
AttitudeRawData data;
|
||||
UAVObjMetadata metadata;
|
||||
|
||||
// Initialize object fields to their default values
|
||||
UAVObjGetInstanceData(obj, instId, &data);
|
||||
memset(&data, 0, sizeof(HeadingActualData));
|
||||
memset(&data, 0, sizeof(AttitudeRawData));
|
||||
|
||||
UAVObjSetInstanceData(obj, instId, &data);
|
||||
|
||||
@ -81,7 +81,7 @@ static void setDefaults(UAVObjHandle obj, uint16_t instId)
|
||||
metadata.gcsAccess = ACCESS_READWRITE;
|
||||
metadata.telemetryAcked = 0;
|
||||
metadata.telemetryUpdateMode = UPDATEMODE_PERIODIC;
|
||||
metadata.telemetryUpdatePeriod = 500;
|
||||
metadata.telemetryUpdatePeriod = 1000;
|
||||
metadata.gcsTelemetryAcked = 0;
|
||||
metadata.gcsTelemetryUpdateMode = UPDATEMODE_MANUAL;
|
||||
metadata.gcsTelemetryUpdatePeriod = 0;
|
||||
@ -93,7 +93,7 @@ static void setDefaults(UAVObjHandle obj, uint16_t instId)
|
||||
/**
|
||||
* Get object handle
|
||||
*/
|
||||
UAVObjHandle HeadingActualHandle()
|
||||
UAVObjHandle AttitudeRawHandle()
|
||||
{
|
||||
return handle;
|
||||
}
|
94
flight/OpenPilot/UAVObjects/inc/attituderaw.h
Normal file
94
flight/OpenPilot/UAVObjects/inc/attituderaw.h
Normal file
@ -0,0 +1,94 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file attituderaw.h
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @brief Implementation of the AttitudeRaw object. This file has been
|
||||
* automatically generated by the UAVObjectGenerator.
|
||||
*
|
||||
* @note Object definition file: attituderaw.xml.
|
||||
* This is an automatically generated file.
|
||||
* DO NOT modify manually.
|
||||
*
|
||||
* @see The GNU Public License (GPL) Version 3
|
||||
*
|
||||
*****************************************************************************/
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef ATTITUDERAW_H
|
||||
#define ATTITUDERAW_H
|
||||
|
||||
// Object constants
|
||||
#define ATTITUDERAW_OBJID 4179445416U
|
||||
#define ATTITUDERAW_NAME "AttitudeRaw"
|
||||
#define ATTITUDERAW_METANAME "AttitudeRawMeta"
|
||||
#define ATTITUDERAW_ISSINGLEINST 1
|
||||
#define ATTITUDERAW_ISSETTINGS 0
|
||||
#define ATTITUDERAW_NUMBYTES sizeof(AttitudeRawData)
|
||||
|
||||
// Object access macros
|
||||
#define AttitudeRawGet(dataOut) UAVObjGetData(AttitudeRawHandle(), dataOut)
|
||||
#define AttitudeRawSet(dataIn) UAVObjSetData(AttitudeRawHandle(), dataIn)
|
||||
#define AttitudeRawInstGet(instId, dataOut) UAVObjGetInstanceData(AttitudeRawHandle(), instId, dataOut)
|
||||
#define AttitudeRawInstSet(instId, dataIn) UAVObjSetInstanceData(AttitudeRawHandle(), instId, dataIn)
|
||||
#define AttitudeRawConnectQueue(queue) UAVObjConnectQueue(AttitudeRawHandle(), queue, EV_MASK_ALL_UPDATES)
|
||||
#define AttitudeRawConnectCallback(cb) UAVObjConnectCallback(AttitudeRawHandle(), cb, EV_MASK_ALL_UPDATES)
|
||||
#define AttitudeRawCreateInstance() UAVObjCreateInstance(AttitudeRawHandle())
|
||||
#define AttitudeRawRequestUpdate() UAVObjRequestUpdate(AttitudeRawHandle())
|
||||
#define AttitudeRawRequestInstUpdate(instId) UAVObjRequestInstanceUpdate(AttitudeRawHandle(), instId)
|
||||
#define AttitudeRawUpdated() UAVObjUpdated(AttitudeRawHandle())
|
||||
#define AttitudeRawInstUpdated(instId) UAVObjUpdated(AttitudeRawHandle(), instId)
|
||||
#define AttitudeRawGetMetadata(dataOut) UAVObjGetMetadata(AttitudeRawHandle(), dataOut)
|
||||
#define AttitudeRawSetMetadata(dataIn) UAVObjSetMetadata(AttitudeRawHandle(), dataIn)
|
||||
|
||||
// Object data
|
||||
typedef struct {
|
||||
int16_t magnetometers[3];
|
||||
uint16_t gyros[3];
|
||||
uint16_t gyrotemp[2];
|
||||
uint16_t accelerometers[3];
|
||||
|
||||
} __attribute__((packed)) AttitudeRawData;
|
||||
|
||||
// Field information
|
||||
// Field magnetometers information
|
||||
/* Array element names for field magnetometers */
|
||||
typedef enum { ATTITUDERAW_MAGNETOMETERS_X=0, ATTITUDERAW_MAGNETOMETERS_Y=1, ATTITUDERAW_MAGNETOMETERS_Z=2 } AttitudeRawmagnetometersElem;
|
||||
/* Number of elements for field magnetometers */
|
||||
#define ATTITUDERAW_MAGNETOMETERS_NUMELEM 3
|
||||
// Field gyros information
|
||||
/* Array element names for field gyros */
|
||||
typedef enum { ATTITUDERAW_GYROS_X=0, ATTITUDERAW_GYROS_Y=1, ATTITUDERAW_GYROS_Z=2 } AttitudeRawgyrosElem;
|
||||
/* Number of elements for field gyros */
|
||||
#define ATTITUDERAW_GYROS_NUMELEM 3
|
||||
// Field gyrotemp information
|
||||
/* Array element names for field gyrotemp */
|
||||
typedef enum { ATTITUDERAW_GYROTEMP_XY=0, ATTITUDERAW_GYROTEMP_Z=1 } AttitudeRawgyrotempElem;
|
||||
/* Number of elements for field gyrotemp */
|
||||
#define ATTITUDERAW_GYROTEMP_NUMELEM 2
|
||||
// Field accelerometers information
|
||||
/* Array element names for field accelerometers */
|
||||
typedef enum { ATTITUDERAW_ACCELEROMETERS_X=0, ATTITUDERAW_ACCELEROMETERS_Y=1, ATTITUDERAW_ACCELEROMETERS_Z=2 } AttitudeRawaccelerometersElem;
|
||||
/* Number of elements for field accelerometers */
|
||||
#define ATTITUDERAW_ACCELEROMETERS_NUMELEM 3
|
||||
|
||||
|
||||
// Generic interface functions
|
||||
int32_t AttitudeRawInitialize();
|
||||
UAVObjHandle AttitudeRawHandle();
|
||||
|
||||
#endif // ATTITUDERAW_H
|
@ -1,78 +0,0 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file headingactual.h
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @brief Implementation of the HeadingActual object. This file has been
|
||||
* automatically generated by the UAVObjectGenerator.
|
||||
*
|
||||
* @note Object definition file: headingactual.xml.
|
||||
* This is an automatically generated file.
|
||||
* DO NOT modify manually.
|
||||
*
|
||||
* @see The GNU Public License (GPL) Version 3
|
||||
*
|
||||
*****************************************************************************/
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef HEADINGACTUAL_H
|
||||
#define HEADINGACTUAL_H
|
||||
|
||||
// Object constants
|
||||
#define HEADINGACTUAL_OBJID 2921442332U
|
||||
#define HEADINGACTUAL_NAME "HeadingActual"
|
||||
#define HEADINGACTUAL_METANAME "HeadingActualMeta"
|
||||
#define HEADINGACTUAL_ISSINGLEINST 1
|
||||
#define HEADINGACTUAL_ISSETTINGS 0
|
||||
#define HEADINGACTUAL_NUMBYTES sizeof(HeadingActualData)
|
||||
|
||||
// Object access macros
|
||||
#define HeadingActualGet(dataOut) UAVObjGetData(HeadingActualHandle(), dataOut)
|
||||
#define HeadingActualSet(dataIn) UAVObjSetData(HeadingActualHandle(), dataIn)
|
||||
#define HeadingActualInstGet(instId, dataOut) UAVObjGetInstanceData(HeadingActualHandle(), instId, dataOut)
|
||||
#define HeadingActualInstSet(instId, dataIn) UAVObjSetInstanceData(HeadingActualHandle(), instId, dataIn)
|
||||
#define HeadingActualConnectQueue(queue) UAVObjConnectQueue(HeadingActualHandle(), queue, EV_MASK_ALL_UPDATES)
|
||||
#define HeadingActualConnectCallback(cb) UAVObjConnectCallback(HeadingActualHandle(), cb, EV_MASK_ALL_UPDATES)
|
||||
#define HeadingActualCreateInstance() UAVObjCreateInstance(HeadingActualHandle())
|
||||
#define HeadingActualRequestUpdate() UAVObjRequestUpdate(HeadingActualHandle())
|
||||
#define HeadingActualRequestInstUpdate(instId) UAVObjRequestInstanceUpdate(HeadingActualHandle(), instId)
|
||||
#define HeadingActualUpdated() UAVObjUpdated(HeadingActualHandle())
|
||||
#define HeadingActualInstUpdated(instId) UAVObjUpdated(HeadingActualHandle(), instId)
|
||||
#define HeadingActualGetMetadata(dataOut) UAVObjGetMetadata(HeadingActualHandle(), dataOut)
|
||||
#define HeadingActualSetMetadata(dataIn) UAVObjSetMetadata(HeadingActualHandle(), dataIn)
|
||||
|
||||
// Object data
|
||||
typedef struct {
|
||||
int16_t raw[3];
|
||||
float heading;
|
||||
|
||||
} __attribute__((packed)) HeadingActualData;
|
||||
|
||||
// Field information
|
||||
// Field raw information
|
||||
/* Array element names for field raw */
|
||||
typedef enum { HEADINGACTUAL_RAW_X=0, HEADINGACTUAL_RAW_Y=1, HEADINGACTUAL_RAW_Z=2 } HeadingActualrawElem;
|
||||
/* Number of elements for field raw */
|
||||
#define HEADINGACTUAL_RAW_NUMELEM 3
|
||||
// Field heading information
|
||||
|
||||
|
||||
// Generic interface functions
|
||||
int32_t HeadingActualInitialize();
|
||||
UAVObjHandle HeadingActualHandle();
|
||||
|
||||
#endif // HEADINGACTUAL_H
|
@ -35,6 +35,7 @@
|
||||
#include "altitudeactual.h"
|
||||
#include "attitudeactual.h"
|
||||
#include "attitudedesired.h"
|
||||
#include "attituderaw.h"
|
||||
#include "attitudesettings.h"
|
||||
#include "exampleobject1.h"
|
||||
#include "exampleobject2.h"
|
||||
@ -43,7 +44,6 @@
|
||||
#include "flightsituationactual.h"
|
||||
#include "flighttelemetrystats.h"
|
||||
#include "gcstelemetrystats.h"
|
||||
#include "headingactual.h"
|
||||
#include "manualcontrolcommand.h"
|
||||
#include "manualcontrolsettings.h"
|
||||
#include "navigationdesired.h"
|
||||
@ -70,6 +70,7 @@ void UAVObjectsInitializeAll()
|
||||
AltitudeActualInitialize();
|
||||
AttitudeActualInitialize();
|
||||
AttitudeDesiredInitialize();
|
||||
AttitudeRawInitialize();
|
||||
AttitudeSettingsInitialize();
|
||||
ExampleObject1Initialize();
|
||||
ExampleObject2Initialize();
|
||||
@ -78,7 +79,6 @@ void UAVObjectsInitializeAll()
|
||||
FlightSituationActualInitialize();
|
||||
FlightTelemetryStatsInitialize();
|
||||
GCSTelemetryStatsInitialize();
|
||||
HeadingActualInitialize();
|
||||
ManualControlCommandInitialize();
|
||||
ManualControlSettingsInitialize();
|
||||
NavigationDesiredInitialize();
|
||||
|
@ -222,8 +222,7 @@ extern enum opahrs_result PIOS_OPAHRS_Sync(struct opahrs_msg_v1 *rsp)
|
||||
return opahrs_msg_v1_recv_rsp (OPAHRS_MSG_V1_RSP_SYNC, rsp);
|
||||
}
|
||||
|
||||
|
||||
enum opahrs_result PIOS_OPAHRS_GetHeading(struct opahrs_msg_v1 *rsp)
|
||||
enum opahrs_result PIOS_OPAHRS_GetAttitudeRaw(struct opahrs_msg_v1 *rsp)
|
||||
{
|
||||
struct opahrs_msg_v1 req;
|
||||
enum opahrs_result rc;
|
||||
@ -232,8 +231,8 @@ enum opahrs_result PIOS_OPAHRS_GetHeading(struct opahrs_msg_v1 *rsp)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Make up a serial number request */
|
||||
opahrs_msg_v1_init_user_tx (&req, OPAHRS_MSG_V1_REQ_HEADING);
|
||||
/* Make up an attituderaw request */
|
||||
opahrs_msg_v1_init_user_tx (&req, OPAHRS_MSG_V1_REQ_ATTITUDERAW);
|
||||
|
||||
/* Send the message until it is received */
|
||||
rc = opahrs_msg_v1_send_req (&req);
|
||||
@ -242,7 +241,7 @@ enum opahrs_result PIOS_OPAHRS_GetHeading(struct opahrs_msg_v1 *rsp)
|
||||
return rc;
|
||||
}
|
||||
|
||||
return opahrs_msg_v1_recv_rsp (OPAHRS_MSG_V1_RSP_HEADING, rsp);
|
||||
return opahrs_msg_v1_recv_rsp (OPAHRS_MSG_V1_RSP_ATTITUDERAW, rsp);
|
||||
}
|
||||
|
||||
enum opahrs_result PIOS_OPAHRS_GetAttitude(struct opahrs_msg_v1 *rsp)
|
||||
@ -254,7 +253,7 @@ enum opahrs_result PIOS_OPAHRS_GetAttitude(struct opahrs_msg_v1 *rsp)
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Make up a serial number request */
|
||||
/* Make up an attitude solution request */
|
||||
opahrs_msg_v1_init_user_tx (&req, OPAHRS_MSG_V1_REQ_ATTITUDE);
|
||||
|
||||
/* Send the message until it is received */
|
||||
|
@ -42,7 +42,7 @@ extern void PIOS_OPAHRS_Init(void);
|
||||
extern enum opahrs_result PIOS_OPAHRS_Sync(struct opahrs_msg_v1 *rsp);
|
||||
extern enum opahrs_result PIOS_OPAHRS_GetSerial(struct opahrs_msg_v1 *rsp);
|
||||
extern enum opahrs_result PIOS_OPAHRS_GetAttitude(struct opahrs_msg_v1 *rsp);
|
||||
extern enum opahrs_result PIOS_OPAHRS_GetHeading(struct opahrs_msg_v1 *rsp);
|
||||
extern enum opahrs_result PIOS_OPAHRS_GetAttitudeRaw(struct opahrs_msg_v1 *rsp);
|
||||
extern enum opahrs_result PIOS_OPAHRS_resync(void);
|
||||
|
||||
#endif /* PIOS_OPAHRS_H */
|
||||
@ -50,4 +50,4 @@ extern enum opahrs_result PIOS_OPAHRS_resync(void);
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
*/
|
||||
*/
|
||||
|
@ -184,19 +184,19 @@ struct opahrs_msg_v1_req_reset {
|
||||
struct opahrs_msg_v1_req_serial {
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct opahrs_msg_v1_req_heading {
|
||||
struct opahrs_msg_v1_req_attituderaw {
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct opahrs_msg_v1_req_attitude {
|
||||
} __attribute__((__packed__));
|
||||
|
||||
union opahrs_msg_v1_req {
|
||||
struct opahrs_msg_v1_req_nop nop;
|
||||
struct opahrs_msg_v1_req_sync sync;
|
||||
struct opahrs_msg_v1_req_reset reset;
|
||||
struct opahrs_msg_v1_req_serial serial;
|
||||
struct opahrs_msg_v1_req_heading heading;
|
||||
struct opahrs_msg_v1_req_attitude attitude;
|
||||
struct opahrs_msg_v1_req_nop nop;
|
||||
struct opahrs_msg_v1_req_sync sync;
|
||||
struct opahrs_msg_v1_req_reset reset;
|
||||
struct opahrs_msg_v1_req_serial serial;
|
||||
struct opahrs_msg_v1_req_attituderaw attituderaw;
|
||||
struct opahrs_msg_v1_req_attitude attitude;
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct opahrs_msg_v1_rsp_sync {
|
||||
@ -212,15 +212,24 @@ struct opahrs_msg_v1_rsp_serial {
|
||||
uint8_t serial_bcd[25];
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct opahrs_msg_v1_rsp_heading {
|
||||
struct opahrs_msg_v1_rsp_attituderaw {
|
||||
struct {
|
||||
float scale;
|
||||
int16_t x;
|
||||
int16_t y;
|
||||
int16_t z;
|
||||
} raw_mag;
|
||||
|
||||
uint16_t heading;
|
||||
} mags;
|
||||
struct {
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
uint16_t z;
|
||||
uint16_t xy_temp;
|
||||
uint16_t z_temp;
|
||||
} gyros;
|
||||
struct {
|
||||
uint16_t x;
|
||||
uint16_t y;
|
||||
uint16_t z;
|
||||
} accels;
|
||||
} __attribute__((__packed__));
|
||||
|
||||
struct opahrs_msg_v1_rsp_attitude {
|
||||
@ -238,10 +247,10 @@ struct opahrs_msg_v1_rsp_attitude {
|
||||
} __attribute__((__packed__));
|
||||
|
||||
union opahrs_msg_v1_rsp {
|
||||
struct opahrs_msg_v1_rsp_sync sync;
|
||||
struct opahrs_msg_v1_rsp_serial serial;
|
||||
struct opahrs_msg_v1_rsp_heading heading;
|
||||
struct opahrs_msg_v1_rsp_attitude attitude;
|
||||
struct opahrs_msg_v1_rsp_sync sync;
|
||||
struct opahrs_msg_v1_rsp_serial serial;
|
||||
struct opahrs_msg_v1_rsp_attituderaw attituderaw;
|
||||
struct opahrs_msg_v1_rsp_attitude attitude;
|
||||
} __attribute__((__packed__));
|
||||
|
||||
enum opahrs_msg_v1_tag {
|
||||
@ -249,12 +258,12 @@ enum opahrs_msg_v1_tag {
|
||||
OPAHRS_MSG_V1_REQ_SYNC,
|
||||
OPAHRS_MSG_V1_REQ_RESET,
|
||||
OPAHRS_MSG_V1_REQ_SERIAL,
|
||||
OPAHRS_MSG_V1_REQ_HEADING,
|
||||
OPAHRS_MSG_V1_REQ_ATTITUDERAW,
|
||||
OPAHRS_MSG_V1_REQ_ATTITUDE,
|
||||
|
||||
OPAHRS_MSG_V1_RSP_SYNC,
|
||||
OPAHRS_MSG_V1_RSP_SERIAL,
|
||||
OPAHRS_MSG_V1_RSP_HEADING,
|
||||
OPAHRS_MSG_V1_RSP_ATTITUDERAW,
|
||||
OPAHRS_MSG_V1_RSP_ATTITUDE,
|
||||
};
|
||||
|
||||
@ -288,4 +297,4 @@ extern void opahrs_msg_v1_init_link_tx (struct opahrs_msg_v1 * msg, enum opahrs_
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
*/
|
||||
*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file headingactual.cpp
|
||||
* @file attituderaw.cpp
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @see The GNU Public License (GPL) Version 3
|
||||
* @addtogroup GCSPlugins GCS Plugins
|
||||
@ -9,7 +9,7 @@
|
||||
* @addtogroup UAVObjectsPlugin UAVObjects Plugin
|
||||
* @{
|
||||
*
|
||||
* @note Object definition file: headingactual.xml.
|
||||
* @note Object definition file: attituderaw.xml.
|
||||
* This is an automatically generated file.
|
||||
* DO NOT modify manually.
|
||||
*
|
||||
@ -30,26 +30,37 @@
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include "headingactual.h"
|
||||
#include "attituderaw.h"
|
||||
#include "uavobjectfield.h"
|
||||
|
||||
const QString HeadingActual::NAME = QString("HeadingActual");
|
||||
const QString AttitudeRaw::NAME = QString("AttitudeRaw");
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*/
|
||||
HeadingActual::HeadingActual(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
|
||||
AttitudeRaw::AttitudeRaw(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
|
||||
{
|
||||
// Create fields
|
||||
QList<UAVObjectField*> fields;
|
||||
QStringList rawElemNames;
|
||||
rawElemNames.append("X");
|
||||
rawElemNames.append("Y");
|
||||
rawElemNames.append("Z");
|
||||
fields.append( new UAVObjectField(QString("raw"), QString("mGa"), UAVObjectField::INT16, rawElemNames, QStringList()) );
|
||||
QStringList headingElemNames;
|
||||
headingElemNames.append("0");
|
||||
fields.append( new UAVObjectField(QString("heading"), QString("degrees"), UAVObjectField::FLOAT32, headingElemNames, QStringList()) );
|
||||
QStringList magnetometersElemNames;
|
||||
magnetometersElemNames.append("X");
|
||||
magnetometersElemNames.append("Y");
|
||||
magnetometersElemNames.append("Z");
|
||||
fields.append( new UAVObjectField(QString("magnetometers"), QString("mGa"), UAVObjectField::INT16, magnetometersElemNames, QStringList()) );
|
||||
QStringList gyrosElemNames;
|
||||
gyrosElemNames.append("X");
|
||||
gyrosElemNames.append("Y");
|
||||
gyrosElemNames.append("Z");
|
||||
fields.append( new UAVObjectField(QString("gyros"), QString("raw"), UAVObjectField::UINT16, gyrosElemNames, QStringList()) );
|
||||
QStringList gyrotempElemNames;
|
||||
gyrotempElemNames.append("XY");
|
||||
gyrotempElemNames.append("Z");
|
||||
fields.append( new UAVObjectField(QString("gyrotemp"), QString("raw"), UAVObjectField::UINT16, gyrotempElemNames, QStringList()) );
|
||||
QStringList accelerometersElemNames;
|
||||
accelerometersElemNames.append("X");
|
||||
accelerometersElemNames.append("Y");
|
||||
accelerometersElemNames.append("Z");
|
||||
fields.append( new UAVObjectField(QString("accelerometers"), QString("raw"), UAVObjectField::UINT16, accelerometersElemNames, QStringList()) );
|
||||
|
||||
// Initialize object
|
||||
initializeFields(fields, (quint8*)&data, NUMBYTES);
|
||||
@ -60,7 +71,7 @@ HeadingActual::HeadingActual(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, N
|
||||
/**
|
||||
* Get the default metadata for this object
|
||||
*/
|
||||
UAVObject::Metadata HeadingActual::getDefaultMetadata()
|
||||
UAVObject::Metadata AttitudeRaw::getDefaultMetadata()
|
||||
{
|
||||
UAVObject::Metadata metadata;
|
||||
metadata.flightAccess = ACCESS_READWRITE;
|
||||
@ -70,7 +81,7 @@ UAVObject::Metadata HeadingActual::getDefaultMetadata()
|
||||
metadata.gcsTelemetryUpdatePeriod = 0;
|
||||
metadata.flightTelemetryAcked = 0;
|
||||
metadata.flightTelemetryUpdateMode = UAVObject::UPDATEMODE_PERIODIC;
|
||||
metadata.flightTelemetryUpdatePeriod = 500;
|
||||
metadata.flightTelemetryUpdatePeriod = 1000;
|
||||
metadata.loggingUpdateMode = UAVObject::UPDATEMODE_NEVER;
|
||||
metadata.loggingUpdatePeriod = 0;
|
||||
return metadata;
|
||||
@ -81,7 +92,7 @@ UAVObject::Metadata HeadingActual::getDefaultMetadata()
|
||||
* If a default value is not specified the object fields
|
||||
* will be initialized to zero.
|
||||
*/
|
||||
void HeadingActual::setDefaultFieldValues()
|
||||
void AttitudeRaw::setDefaultFieldValues()
|
||||
{
|
||||
|
||||
}
|
||||
@ -89,7 +100,7 @@ void HeadingActual::setDefaultFieldValues()
|
||||
/**
|
||||
* Get the object data fields
|
||||
*/
|
||||
HeadingActual::DataFields HeadingActual::getData()
|
||||
AttitudeRaw::DataFields AttitudeRaw::getData()
|
||||
{
|
||||
QMutexLocker locker(mutex);
|
||||
return data;
|
||||
@ -98,7 +109,7 @@ HeadingActual::DataFields HeadingActual::getData()
|
||||
/**
|
||||
* Set the object data fields
|
||||
*/
|
||||
void HeadingActual::setData(const DataFields& data)
|
||||
void AttitudeRaw::setData(const DataFields& data)
|
||||
{
|
||||
QMutexLocker locker(mutex);
|
||||
// Get metadata
|
||||
@ -117,9 +128,9 @@ void HeadingActual::setData(const DataFields& data)
|
||||
* Do not use this function directly to create new instances, the
|
||||
* UAVObjectManager should be used instead.
|
||||
*/
|
||||
UAVDataObject* HeadingActual::clone(quint32 instID)
|
||||
UAVDataObject* AttitudeRaw::clone(quint32 instID)
|
||||
{
|
||||
HeadingActual* obj = new HeadingActual();
|
||||
AttitudeRaw* obj = new AttitudeRaw();
|
||||
obj->initialize(instID, this->getMetaObject());
|
||||
return obj;
|
||||
}
|
||||
@ -127,7 +138,7 @@ UAVDataObject* HeadingActual::clone(quint32 instID)
|
||||
/**
|
||||
* Static function to retrieve an instance of the object.
|
||||
*/
|
||||
HeadingActual* HeadingActual::GetInstance(UAVObjectManager* objMngr, quint32 instID)
|
||||
AttitudeRaw* AttitudeRaw::GetInstance(UAVObjectManager* objMngr, quint32 instID)
|
||||
{
|
||||
return dynamic_cast<HeadingActual*>(objMngr->getObject(HeadingActual::OBJID, instID));
|
||||
return dynamic_cast<AttitudeRaw*>(objMngr->getObject(AttitudeRaw::OBJID, instID));
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
*
|
||||
* @file headingactual.h
|
||||
* @file attituderaw.h
|
||||
* @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
* @see The GNU Public License (GPL) Version 3
|
||||
* @addtogroup GCSPlugins GCS Plugins
|
||||
@ -9,7 +9,7 @@
|
||||
* @addtogroup UAVObjectsPlugin UAVObjects Plugin
|
||||
* @{
|
||||
*
|
||||
* @note Object definition file: headingactual.xml.
|
||||
* @note Object definition file: attituderaw.xml.
|
||||
* This is an automatically generated file.
|
||||
* DO NOT modify manually.
|
||||
*
|
||||
@ -30,49 +30,65 @@
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#ifndef HEADINGACTUAL_H
|
||||
#define HEADINGACTUAL_H
|
||||
#ifndef ATTITUDERAW_H
|
||||
#define ATTITUDERAW_H
|
||||
|
||||
#include "uavdataobject.h"
|
||||
#include "uavobjectmanager.h"
|
||||
|
||||
class UAVOBJECTS_EXPORT HeadingActual: public UAVDataObject
|
||||
class UAVOBJECTS_EXPORT AttitudeRaw: public UAVDataObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
// Field structure
|
||||
typedef struct {
|
||||
qint16 raw[3];
|
||||
float heading;
|
||||
qint16 magnetometers[3];
|
||||
quint16 gyros[3];
|
||||
quint16 gyrotemp[2];
|
||||
quint16 accelerometers[3];
|
||||
|
||||
} __attribute__((packed)) DataFields;
|
||||
|
||||
// Field information
|
||||
// Field raw information
|
||||
/* Array element names for field raw */
|
||||
typedef enum { RAW_X=0, RAW_Y=1, RAW_Z=2 } rawElem;
|
||||
/* Number of elements for field raw */
|
||||
static const quint32 RAW_NUMELEM = 3;
|
||||
// Field heading information
|
||||
// Field magnetometers information
|
||||
/* Array element names for field magnetometers */
|
||||
typedef enum { MAGNETOMETERS_X=0, MAGNETOMETERS_Y=1, MAGNETOMETERS_Z=2 } magnetometersElem;
|
||||
/* Number of elements for field magnetometers */
|
||||
static const quint32 MAGNETOMETERS_NUMELEM = 3;
|
||||
// Field gyros information
|
||||
/* Array element names for field gyros */
|
||||
typedef enum { GYROS_X=0, GYROS_Y=1, GYROS_Z=2 } gyrosElem;
|
||||
/* Number of elements for field gyros */
|
||||
static const quint32 GYROS_NUMELEM = 3;
|
||||
// Field gyrotemp information
|
||||
/* Array element names for field gyrotemp */
|
||||
typedef enum { GYROTEMP_XY=0, GYROTEMP_Z=1 } gyrotempElem;
|
||||
/* Number of elements for field gyrotemp */
|
||||
static const quint32 GYROTEMP_NUMELEM = 2;
|
||||
// Field accelerometers information
|
||||
/* Array element names for field accelerometers */
|
||||
typedef enum { ACCELEROMETERS_X=0, ACCELEROMETERS_Y=1, ACCELEROMETERS_Z=2 } accelerometersElem;
|
||||
/* Number of elements for field accelerometers */
|
||||
static const quint32 ACCELEROMETERS_NUMELEM = 3;
|
||||
|
||||
|
||||
// Constants
|
||||
static const quint32 OBJID = 2921442332U;
|
||||
static const quint32 OBJID = 4179445416U;
|
||||
static const QString NAME;
|
||||
static const bool ISSINGLEINST = 1;
|
||||
static const bool ISSETTINGS = 0;
|
||||
static const quint32 NUMBYTES = sizeof(DataFields);
|
||||
|
||||
// Functions
|
||||
HeadingActual();
|
||||
AttitudeRaw();
|
||||
|
||||
DataFields getData();
|
||||
void setData(const DataFields& data);
|
||||
Metadata getDefaultMetadata();
|
||||
UAVDataObject* clone(quint32 instID);
|
||||
|
||||
static HeadingActual* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0);
|
||||
static AttitudeRaw* GetInstance(UAVObjectManager* objMngr, quint32 instID = 0);
|
||||
|
||||
private:
|
||||
DataFields data;
|
||||
@ -81,4 +97,4 @@ private:
|
||||
|
||||
};
|
||||
|
||||
#endif // HEADINGACTUAL_H
|
||||
#endif // ATTITUDERAW_H
|
@ -1,12 +1,12 @@
|
||||
##
|
||||
##############################################################################
|
||||
#
|
||||
# @file headingactual.py
|
||||
# @file attituderaw.py
|
||||
# @author The OpenPilot Team, http://www.openpilot.org Copyright (C) 2010.
|
||||
# @brief Implementation of the HeadingActual object. This file has been
|
||||
# @brief Implementation of the AttitudeRaw object. This file has been
|
||||
# automatically generated by the UAVObjectGenerator.
|
||||
#
|
||||
# @note Object definition file: headingactual.xml.
|
||||
# @note Object definition file: attituderaw.xml.
|
||||
# This is an automatically generated file.
|
||||
# DO NOT modify manually.
|
||||
#
|
||||
@ -38,7 +38,7 @@ from collections import namedtuple
|
||||
# This is a list of instances of the data fields contained in this object
|
||||
_fields = [ \
|
||||
uavobject.UAVObjectField(
|
||||
'raw',
|
||||
'magnetometers',
|
||||
'h',
|
||||
3,
|
||||
[
|
||||
@ -50,11 +50,36 @@ _fields = [ \
|
||||
}
|
||||
),
|
||||
uavobject.UAVObjectField(
|
||||
'heading',
|
||||
'f',
|
||||
1,
|
||||
'gyros',
|
||||
'H',
|
||||
3,
|
||||
[
|
||||
'0',
|
||||
'X',
|
||||
'Y',
|
||||
'Z',
|
||||
],
|
||||
{
|
||||
}
|
||||
),
|
||||
uavobject.UAVObjectField(
|
||||
'gyrotemp',
|
||||
'H',
|
||||
2,
|
||||
[
|
||||
'XY',
|
||||
'Z',
|
||||
],
|
||||
{
|
||||
}
|
||||
),
|
||||
uavobject.UAVObjectField(
|
||||
'accelerometers',
|
||||
'H',
|
||||
3,
|
||||
[
|
||||
'X',
|
||||
'Y',
|
||||
'Z',
|
||||
],
|
||||
{
|
||||
}
|
||||
@ -62,11 +87,11 @@ _fields = [ \
|
||||
]
|
||||
|
||||
|
||||
class HeadingActual(uavobject.UAVObject):
|
||||
class AttitudeRaw(uavobject.UAVObject):
|
||||
## Object constants
|
||||
OBJID = 2921442332
|
||||
NAME = "HeadingActual"
|
||||
METANAME = "HeadingActualMeta"
|
||||
OBJID = 4179445416
|
||||
NAME = "AttitudeRaw"
|
||||
METANAME = "AttitudeRawMeta"
|
||||
ISSINGLEINST = 1
|
||||
ISSETTINGS = 0
|
||||
|
||||
@ -90,7 +115,7 @@ class HeadingActual(uavobject.UAVObject):
|
||||
|
||||
def main():
|
||||
# Instantiate the object and dump out some interesting info
|
||||
x = HeadingActual()
|
||||
x = AttitudeRaw()
|
||||
print (x)
|
||||
|
||||
if __name__ == "__main__":
|
@ -19,7 +19,7 @@ HEADERS += uavobjects_global.h \
|
||||
exampleobject2.h \
|
||||
exampleobject1.h \
|
||||
gcstelemetrystats.h \
|
||||
headingactual.h \
|
||||
attituderaw.h \
|
||||
flighttelemetrystats.h \
|
||||
systemstats.h \
|
||||
systemalarms.h \
|
||||
@ -53,7 +53,7 @@ SOURCES += uavobject.cpp \
|
||||
exampleobject2.cpp \
|
||||
exampleobject1.cpp \
|
||||
gcstelemetrystats.cpp \
|
||||
headingactual.cpp \
|
||||
attituderaw.cpp \
|
||||
flighttelemetrystats.cpp \
|
||||
systemstats.cpp \
|
||||
systemalarms.cpp \
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include "altitudeactual.h"
|
||||
#include "attitudeactual.h"
|
||||
#include "attitudedesired.h"
|
||||
#include "attituderaw.h"
|
||||
#include "attitudesettings.h"
|
||||
#include "exampleobject1.h"
|
||||
#include "exampleobject2.h"
|
||||
@ -45,7 +46,6 @@
|
||||
#include "flightsituationactual.h"
|
||||
#include "flighttelemetrystats.h"
|
||||
#include "gcstelemetrystats.h"
|
||||
#include "headingactual.h"
|
||||
#include "manualcontrolcommand.h"
|
||||
#include "manualcontrolsettings.h"
|
||||
#include "navigationdesired.h"
|
||||
@ -72,6 +72,7 @@ void UAVObjectsInitialize(UAVObjectManager* objMngr)
|
||||
objMngr->registerObject( new AltitudeActual() );
|
||||
objMngr->registerObject( new AttitudeActual() );
|
||||
objMngr->registerObject( new AttitudeDesired() );
|
||||
objMngr->registerObject( new AttitudeRaw() );
|
||||
objMngr->registerObject( new AttitudeSettings() );
|
||||
objMngr->registerObject( new ExampleObject1() );
|
||||
objMngr->registerObject( new ExampleObject2() );
|
||||
@ -80,7 +81,6 @@ void UAVObjectsInitialize(UAVObjectManager* objMngr)
|
||||
objMngr->registerObject( new FlightSituationActual() );
|
||||
objMngr->registerObject( new FlightTelemetryStats() );
|
||||
objMngr->registerObject( new GCSTelemetryStats() );
|
||||
objMngr->registerObject( new HeadingActual() );
|
||||
objMngr->registerObject( new ManualControlCommand() );
|
||||
objMngr->registerObject( new ManualControlSettings() );
|
||||
objMngr->registerObject( new NavigationDesired() );
|
||||
|
12
ground/src/shared/uavobjectdefinition/attituderaw.xml
Normal file
12
ground/src/shared/uavobjectdefinition/attituderaw.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<xml>
|
||||
<object name="AttitudeRaw" singleinstance="true" settings="false">
|
||||
<field name="magnetometers" units="mGa" type="int16" elementnames="X,Y,Z"/>
|
||||
<field name="gyros" units="raw" type="uint16" elementnames="X,Y,Z"/>
|
||||
<field name="gyrotemp" units="raw" type="uint16" elementnames="XY,Z"/>
|
||||
<field name="accelerometers" units="raw" type="uint16" elementnames="X,Y,Z"/>
|
||||
<access gcs="readwrite" flight="readwrite"/>
|
||||
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
||||
<telemetryflight acked="false" updatemode="periodic" period="1000"/>
|
||||
<logging updatemode="never" period="0"/>
|
||||
</object>
|
||||
</xml>
|
@ -1,10 +0,0 @@
|
||||
<xml>
|
||||
<object name="HeadingActual" singleinstance="true" settings="false">
|
||||
<field name="raw" units="mGa" type="int16" elementnames="X,Y,Z"/>
|
||||
<field name="heading" units="degrees" type="float" elements="1"/>
|
||||
<access gcs="readwrite" flight="readwrite"/>
|
||||
<telemetrygcs acked="false" updatemode="manual" period="0"/>
|
||||
<telemetryflight acked="false" updatemode="periodic" period="500"/>
|
||||
<logging updatemode="never" period="0"/>
|
||||
</object>
|
||||
</xml>
|
Loading…
Reference in New Issue
Block a user