mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-03-12 01:23:56 -03:00
AP_InertialNav: optimise some multiplies
This commit is contained in:
parent
01a4fabf9e
commit
1849aca0e9
@ -63,16 +63,19 @@ void AP_InertialNav::update(float dt)
|
|||||||
//Convert North-East-Down to North-East-Up
|
//Convert North-East-Down to North-East-Up
|
||||||
accel_ef.z = -accel_ef.z;
|
accel_ef.z = -accel_ef.z;
|
||||||
|
|
||||||
accel_correction_ef.x += _position_error.x * _k3_xy * dt;
|
float tmp = _k3_xy * dt;
|
||||||
accel_correction_ef.y += _position_error.y * _k3_xy * dt;
|
accel_correction_ef.x += _position_error.x * tmp;
|
||||||
|
accel_correction_ef.y += _position_error.y * tmp;
|
||||||
accel_correction_ef.z += _position_error.z * _k3_z * dt;
|
accel_correction_ef.z += _position_error.z * _k3_z * dt;
|
||||||
|
|
||||||
_velocity.x += _position_error.x * _k2_xy * dt;
|
tmp = _k2_xy * dt;
|
||||||
_velocity.y += _position_error.y * _k2_xy * dt;
|
_velocity.x += _position_error.x * tmp;
|
||||||
|
_velocity.y += _position_error.y * tmp;
|
||||||
_velocity.z += _position_error.z * _k2_z * dt;
|
_velocity.z += _position_error.z * _k2_z * dt;
|
||||||
|
|
||||||
_position_correction.x += _position_error.x * _k1_xy * dt;
|
tmp = _k1_xy * dt;
|
||||||
_position_correction.y += _position_error.y * _k1_xy * dt;
|
_position_correction.x += _position_error.x * tmp;
|
||||||
|
_position_correction.y += _position_error.y * tmp;
|
||||||
_position_correction.z += _position_error.z * _k1_z * dt;
|
_position_correction.z += _position_error.z * _k1_z * dt;
|
||||||
|
|
||||||
// calculate velocity increase adding new acceleration from accelerometers
|
// calculate velocity increase adding new acceleration from accelerometers
|
||||||
@ -302,7 +305,7 @@ void AP_InertialNav::check_baro()
|
|||||||
// calculate time since last baro reading
|
// calculate time since last baro reading
|
||||||
baro_update_time = _baro->get_last_update();
|
baro_update_time = _baro->get_last_update();
|
||||||
if( baro_update_time != _baro_last_update ) {
|
if( baro_update_time != _baro_last_update ) {
|
||||||
float dt = (float)(baro_update_time - _baro_last_update) / 1000.0f;
|
float dt = (float)(baro_update_time - _baro_last_update) * 0.001f;
|
||||||
// call correction method
|
// call correction method
|
||||||
correct_with_baro(_baro->get_altitude()*100, dt);
|
correct_with_baro(_baro->get_altitude()*100, dt);
|
||||||
_baro_last_update = baro_update_time;
|
_baro_last_update = baro_update_time;
|
||||||
|
Loading…
Reference in New Issue
Block a user