some more doxygen comments

This commit is contained in:
Felix Ruess
2012-01-16 19:04:33 +01:00
parent a740805002
commit bb1dcf1352
5 changed files with 88 additions and 41 deletions
+48 -18
View File
@@ -19,6 +19,10 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/** \file ahrs.h
* \brief Attitude and Heading Reference System interface
*/
#ifndef AHRS_H #ifndef AHRS_H
#define AHRS_H #define AHRS_H
@@ -34,41 +38,44 @@
#include AHRS_TYPE_H #include AHRS_TYPE_H
#endif #endif
/** Attitude and Heading Reference System state (fixed point version) */
struct Ahrs { struct Ahrs {
struct Int32Quat ltp_to_imu_quat; struct Int32Quat ltp_to_imu_quat; ///< Rotation from LocalTangentPlane to IMU frame as unit quaternion
struct Int32Eulers ltp_to_imu_euler; struct Int32Eulers ltp_to_imu_euler; ///< Rotation from LocalTangentPlane to IMU frame as Euler angles
struct Int32RMat ltp_to_imu_rmat; struct Int32RMat ltp_to_imu_rmat; ///< Rotation from LocalTangentPlane to IMU frame as Rotation Matrix
struct Int32Rates imu_rate; struct Int32Rates imu_rate; ///< Rotational velocity in IMU frame
struct Int32Quat ltp_to_body_quat; struct Int32Quat ltp_to_body_quat; ///< Rotation from LocalTangentPlane to body frame as unit quaternion
struct Int32Eulers ltp_to_body_euler; struct Int32Eulers ltp_to_body_euler; ///< Rotation from LocalTangentPlane to body frame as Euler angles
struct Int32RMat ltp_to_body_rmat; struct Int32RMat ltp_to_body_rmat; ///< Rotation from LocalTangentPlane to body frame as Rotation Matrix
struct Int32Rates body_rate; struct Int32Rates body_rate; ///< Rotational velocity in body frame
uint8_t status; uint8_t status; ///< status of the AHRS, AHRS_UNINIT or AHRS_RUNNING
}; };
/** Attitude and Heading Reference System state (floating point version) */
struct AhrsFloat { struct AhrsFloat {
struct FloatQuat ltp_to_imu_quat; struct FloatQuat ltp_to_imu_quat; ///< Rotation from LocalTangentPlane to IMU frame as unit quaternion
struct FloatEulers ltp_to_imu_euler; struct FloatEulers ltp_to_imu_euler; ///< Rotation from LocalTangentPlane to IMU frame as Euler angles
struct FloatRMat ltp_to_imu_rmat; struct FloatRMat ltp_to_imu_rmat; ///< Rotation from LocalTangentPlane to IMU frame as Rotation Matrix
struct FloatRates imu_rate; struct FloatRates imu_rate; ///< Rotational velocity in IMU frame
struct FloatRates imu_rate_previous; struct FloatRates imu_rate_previous;
struct FloatRates imu_rate_d; struct FloatRates imu_rate_d;
struct FloatQuat ltp_to_body_quat; struct FloatQuat ltp_to_body_quat; ///< Rotation from LocalTangentPlane to body frame as unit quaternion
struct FloatEulers ltp_to_body_euler; struct FloatEulers ltp_to_body_euler; ///< Rotation from LocalTangentPlane to body frame as Euler angles
struct FloatRMat ltp_to_body_rmat; struct FloatRMat ltp_to_body_rmat; ///< Rotation from LocalTangentPlane to body frame as Rotation Matrix
struct FloatRates body_rate; struct FloatRates body_rate; ///< Rotational velocity in body frame
struct FloatRates body_rate_d; struct FloatRates body_rate_d;
// always use status from fixed point ahrs struct for now // always use status from fixed point ahrs struct for now
//uint8_t status; //uint8_t status;
}; };
/** global AHRS state (fixed point version) */
extern struct Ahrs ahrs; extern struct Ahrs ahrs;
/** global AHRS state (floating point version) */
extern struct AhrsFloat ahrs_float; extern struct AhrsFloat ahrs_float;
extern float ahrs_mag_offset; extern float ahrs_mag_offset;
@@ -86,10 +93,33 @@ extern float ahrs_mag_offset;
RATES_BFP_OF_REAL(ahrs.body_rate, ahrs_float.body_rate); \ RATES_BFP_OF_REAL(ahrs.body_rate, ahrs_float.body_rate); \
} }
/** AHRS initialization. Called at startup.
* Needs to be implemented by each AHRS algorithm.
*/
extern void ahrs_init(void); extern void ahrs_init(void);
/** Aligns the AHRS. Called after ahrs_aligner has run to set initial attitude and biases.
* Must set the ahrs status to AHRS_RUNNING.
* Needs to be implemented by each AHRS algorithm.
*/
extern void ahrs_align(void); extern void ahrs_align(void);
/** Propagation. Usually integrates the gyro rates to angles.
* Reads the global #imu data struct.
* Needs to be implemented by each AHRS algorithm.
*/
extern void ahrs_propagate(void); extern void ahrs_propagate(void);
/** Update AHRS state with accerleration measurements.
* Reads the global #imu data struct.
* Needs to be implemented by each AHRS algorithm.
*/
extern void ahrs_update_accel(void); extern void ahrs_update_accel(void);
/** Update AHRS state with magnetometer measurements.
* Reads the global #imu data struct.
* Needs to be implemented by each AHRS algorithm.
*/
extern void ahrs_update_mag(void); extern void ahrs_update_mag(void);
#endif /* AHRS_H */ #endif /* AHRS_H */
+5
View File
@@ -19,6 +19,11 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/** @file gps.c
* @brief Device independent GPS code
*
*/
#include "subsystems/gps.h" #include "subsystems/gps.h"
#include "led.h" #include "led.h"
+11 -9
View File
@@ -20,7 +20,7 @@
*/ */
/** @file gps.h /** @file gps.h
* @brief Device independent GPS code * @brief Device independent GPS code (interface)
* *
*/ */
@@ -48,16 +48,17 @@
#define GPS_NB_CHANNELS 1 #define GPS_NB_CHANNELS 1
#endif #endif
/** Space Vehicle Information */ /** data structure for Space Vehicle Information of a single satellite */
struct SVinfo { struct SVinfo {
uint8_t svid; uint8_t svid; ///< Satellite ID
uint8_t flags; uint8_t flags; ///< bitfield with GPS receiver specific flags
uint8_t qi; uint8_t qi; ///< quality bitfield (GPS receiver specific)
uint8_t cno; uint8_t cno; ///< Carrier to Noise Ratio (Signal Strength) in dbHz
int8_t elev; ///< deg int8_t elev; ///< elevation in deg
int16_t azim; ///< deg int16_t azim; ///< azimuth in deg
}; };
/** data structure for GPS information */
struct GpsState { struct GpsState {
struct EcefCoor_i ecef_pos; ///< position in ECEF in cm struct EcefCoor_i ecef_pos; ///< position in ECEF in cm
struct LlaCoor_i lla_pos; ///< position in LLA (lat,lon: rad*1e7; alt: mm over ellipsoid) struct LlaCoor_i lla_pos; ///< position in LLA (lat,lon: rad*1e7; alt: mm over ellipsoid)
@@ -77,7 +78,7 @@ struct GpsState {
uint32_t tow; ///< time of week in ms uint32_t tow; ///< time of week in ms
uint8_t nb_channels; ///< Number of scanned satellites uint8_t nb_channels; ///< Number of scanned satellites
struct SVinfo svinfos[GPS_NB_CHANNELS]; struct SVinfo svinfos[GPS_NB_CHANNELS]; ///< holds information from the Space Vehicles (Satellites)
uint32_t last_fix_ticks; ///< cpu time in ticks at last valid fix uint32_t last_fix_ticks; ///< cpu time in ticks at last valid fix
uint16_t last_fix_time; ///< cpu time in sec at last valid fix uint16_t last_fix_time; ///< cpu time in sec at last valid fix
@@ -90,6 +91,7 @@ struct GpsTimeSync {
uint32_t t0; ///< for time sync: hw clock ticks when GPS message is received uint32_t t0; ///< for time sync: hw clock ticks when GPS message is received
}; };
/** global GPS state */
extern struct GpsState gps; extern struct GpsState gps;
+4
View File
@@ -21,6 +21,10 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/** \file imu.c
* \brief Inertial Measurement Unit interface
*/
#include "subsystems/imu.h" #include "subsystems/imu.h"
struct Imu imu; struct Imu imu;
+20 -14
View File
@@ -20,6 +20,9 @@
* the Free Software Foundation, 59 Temple Place - Suite 330, * the Free Software Foundation, 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/** \file imu.h
* \brief Inertial Measurement Unit interface
*/
#ifndef IMU_H #ifndef IMU_H
#define IMU_H #define IMU_H
@@ -32,23 +35,24 @@
extern void imu_impl_init(void); extern void imu_impl_init(void);
extern void imu_periodic(void); extern void imu_periodic(void);
/** abstract IMU interface providing fixed point interface */
struct Imu { struct Imu {
struct Int32Rates gyro; struct Int32Rates gyro; ///< gyroscope measurements
struct Int32Vect3 accel; struct Int32Vect3 accel; ///< accelerometer measurements
struct Int32Vect3 mag; struct Int32Vect3 mag; ///< magnetometer measurements
struct Int32Rates gyro_prev; struct Int32Rates gyro_prev; ///< previous gyroscope measurements
struct Int32Vect3 accel_prev; struct Int32Vect3 accel_prev; ///< previous accelerometer measurements
struct Int32Rates gyro_neutral; struct Int32Rates gyro_neutral; ///< gyroscope bias
struct Int32Vect3 accel_neutral; struct Int32Vect3 accel_neutral; ///< accelerometer bias
struct Int32Vect3 mag_neutral; struct Int32Vect3 mag_neutral; ///< magnetometer neutral readings (bias)
struct Int32Rates gyro_unscaled; struct Int32Rates gyro_unscaled; ///< unscaled gyroscope measurements
struct Int32Vect3 accel_unscaled; struct Int32Vect3 accel_unscaled; ///< unscaled accelerometer measurements
struct Int32Vect3 mag_unscaled; struct Int32Vect3 mag_unscaled; ///< unscaled magnetometer measurements
struct Int32Quat body_to_imu_quat; struct Int32Quat body_to_imu_quat; ///< rotation from body to imu frame as a unit quaternion
struct Int32RMat body_to_imu_rmat; struct Int32RMat body_to_imu_rmat; ///< rotation from body to imu frame as a rotation matrix
}; };
/* abstract IMU interface providing floating point interface */ /** abstract IMU interface providing floating point interface */
struct ImuFloat { struct ImuFloat {
struct FloatRates gyro; struct FloatRates gyro;
struct FloatVect3 accel; struct FloatVect3 accel;
@@ -61,6 +65,8 @@ struct ImuFloat {
}; };
extern void imu_float_init(struct ImuFloat* imuf); extern void imu_float_init(struct ImuFloat* imuf);
/** global IMU state */
extern struct Imu imu; extern struct Imu imu;
/* underlying hardware */ /* underlying hardware */