mirror of https://github.com/ArduPilot/ardupilot
desktop: floating point precision changes from Justin Beech
This commit is contained in:
parent
db1fafaaec
commit
a6e87915eb
|
@ -20,11 +20,11 @@ void sitl_setup(void);
|
||||||
int sitl_gps_pipe(void);
|
int sitl_gps_pipe(void);
|
||||||
ssize_t sitl_gps_read(int fd, void *buf, size_t count);
|
ssize_t sitl_gps_read(int fd, void *buf, size_t count);
|
||||||
void sitl_update_compass(float heading, float roll, float pitch, float yaw);
|
void sitl_update_compass(float heading, float roll, float pitch, float yaw);
|
||||||
void sitl_update_gps(float latitude, float longitude, float altitude,
|
void sitl_update_gps(double latitude, double longitude, float altitude,
|
||||||
float speedN, float speedE, bool have_lock);
|
double speedN, double speedE, bool have_lock);
|
||||||
void sitl_update_adc(float roll, float pitch, float yaw,
|
void sitl_update_adc(float roll, float pitch, float yaw,
|
||||||
float rollRate, float pitchRate, float yawRate,
|
double rollRate, double pitchRate, double yawRate,
|
||||||
float xAccel, float yAccel, float zAccel,
|
double xAccel, double yAccel, double zAccel,
|
||||||
float airspeed);
|
float airspeed);
|
||||||
void sitl_setup_adc(void);
|
void sitl_setup_adc(void);
|
||||||
void sitl_update_barometer(float altitude);
|
void sitl_update_barometer(float altitude);
|
||||||
|
|
|
@ -40,10 +40,28 @@ static uint16_t airspeed_sensor(float airspeed)
|
||||||
average rates to cope with slow update rates.
|
average rates to cope with slow update rates.
|
||||||
|
|
||||||
inputs are in degrees
|
inputs are in degrees
|
||||||
|
|
||||||
|
phi - roll
|
||||||
|
theta - pitch
|
||||||
|
psi - true heading
|
||||||
|
alpha - angle of attack
|
||||||
|
beta - side slip
|
||||||
|
phidot - roll rate
|
||||||
|
thetadot - pitch rate
|
||||||
|
psidot - yaw rate
|
||||||
|
v_north - north velocity in local/body frame
|
||||||
|
v_east - east velocity in local/body frame
|
||||||
|
v_down - down velocity in local/body frame
|
||||||
|
A_X_pilot - X accel in body frame
|
||||||
|
A_Y_pilot - Y accel in body frame
|
||||||
|
A_Z_pilot - Z accel in body frame
|
||||||
|
|
||||||
|
Note: doubles on high prec. stuff are preserved until the last moment
|
||||||
|
|
||||||
*/
|
*/
|
||||||
void sitl_update_adc(float roll, float pitch, float yaw,
|
void sitl_update_adc(float roll, float pitch, float yaw, // Relative to earth
|
||||||
float rollRate, float pitchRate, float yawRate,
|
double rollRate, double pitchRate,double yawRate, // Local to plane
|
||||||
float xAccel, float yAccel, float zAccel,
|
double xAccel, double yAccel, double zAccel, // Local to plane
|
||||||
float airspeed)
|
float airspeed)
|
||||||
{
|
{
|
||||||
static const uint8_t sensor_map[6] = { 1, 2, 0, 4, 5, 6 };
|
static const uint8_t sensor_map[6] = { 1, 2, 0, 4, 5, 6 };
|
||||||
|
@ -55,9 +73,9 @@ void sitl_update_adc(float roll, float pitch, float yaw,
|
||||||
const float _gyro_gain_y = ToRad(0.41);
|
const float _gyro_gain_y = ToRad(0.41);
|
||||||
const float _gyro_gain_z = ToRad(0.41);
|
const float _gyro_gain_z = ToRad(0.41);
|
||||||
const float _accel_scale = 9.80665 / 423.8;
|
const float _accel_scale = 9.80665 / 423.8;
|
||||||
float adc[7];
|
double adc[7];
|
||||||
float phi, theta, phiDot, thetaDot, psiDot;
|
double phi, theta, phiDot, thetaDot, psiDot;
|
||||||
float p, q, r;
|
double p, q, r;
|
||||||
|
|
||||||
/* convert the angular velocities from earth frame to
|
/* convert the angular velocities from earth frame to
|
||||||
body frame. Thanks to James Goppert for the formula
|
body frame. Thanks to James Goppert for the formula
|
||||||
|
|
|
@ -78,8 +78,8 @@ static void gps_send(uint8_t msgid, uint8_t *buf, uint16_t size)
|
||||||
/*
|
/*
|
||||||
possibly send a new GPS UBLOX packet
|
possibly send a new GPS UBLOX packet
|
||||||
*/
|
*/
|
||||||
void sitl_update_gps(float latitude, float longitude, float altitude,
|
void sitl_update_gps(double latitude, double longitude, float altitude,
|
||||||
float speedN, float speedE, bool have_lock)
|
double speedN, double speedE, bool have_lock)
|
||||||
{
|
{
|
||||||
struct ubx_nav_posllh {
|
struct ubx_nav_posllh {
|
||||||
uint32_t time; // GPS msToW
|
uint32_t time; // GPS msToW
|
||||||
|
@ -113,7 +113,7 @@ void sitl_update_gps(float latitude, float longitude, float altitude,
|
||||||
const uint8_t MSG_POSLLH = 0x2;
|
const uint8_t MSG_POSLLH = 0x2;
|
||||||
const uint8_t MSG_STATUS = 0x3;
|
const uint8_t MSG_STATUS = 0x3;
|
||||||
const uint8_t MSG_VELNED = 0x12;
|
const uint8_t MSG_VELNED = 0x12;
|
||||||
float lon_scale;
|
double lon_scale;
|
||||||
|
|
||||||
// 4Hz
|
// 4Hz
|
||||||
if (millis() - gps_state.last_update < 250) {
|
if (millis() - gps_state.last_update < 250) {
|
||||||
|
|
Loading…
Reference in New Issue