Skip to content

Commit 6d36dd6

Browse files
committed
AP_AHRS: cache roll_deg and friends
1 parent 4791cdf commit 6d36dd6

File tree

4 files changed

+28
-22
lines changed

4 files changed

+28
-22
lines changed

libraries/AP_AHRS/AP_AHRS.h

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,9 @@ class AP_AHRS {
561561
float get_yaw_rad() const { return yaw; }
562562

563563
// roll/pitch/yaw euler angles, all in radians
564-
float get_roll_deg() const { return roll_sensor * 0.01; }
565-
float get_pitch_deg() const { return pitch_sensor * 0.01; }
566-
float get_yaw_deg() const { return yaw_sensor * 0.01; }
564+
float get_roll_deg() const { return roll_deg; }
565+
float get_pitch_deg() const { return pitch_deg; }
566+
float get_yaw_deg() const { return yaw_deg; }
567567

568568
// helper trig value accessors
569569
float cos_roll() const {
@@ -585,15 +585,10 @@ class AP_AHRS {
585585
return _sin_yaw;
586586
}
587587

588-
float roll_deg() const {
589-
return roll_sensor * 0.01;
590-
}
591-
float pitch_deg() const {
592-
return pitch_sensor * 0.01;
593-
}
594-
float yaw_deg() const {
595-
return yaw_sensor * 0.01;
596-
}
588+
// floating point Euler angles (Degrees)
589+
float roll_deg;
590+
float pitch_deg;
591+
float yaw_deg;
597592

598593
// integer Euler angles (Degrees * 100)
599594
int32_t roll_sensor;

libraries/AP_AHRS/AP_AHRS_Backend.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,16 @@ void AP_AHRS::update_trig(void)
151151
*/
152152
void AP_AHRS::update_cd_values(void)
153153
{
154-
roll_sensor = degrees(roll) * 100;
155-
pitch_sensor = degrees(pitch) * 100;
156-
yaw_sensor = degrees(yaw) * 100;
157-
if (yaw_sensor < 0)
158-
yaw_sensor += 36000;
154+
roll_deg = degrees(roll);
155+
pitch_deg = degrees(pitch);
156+
yaw_deg = degrees(yaw);
157+
if (yaw_deg < 0) {
158+
yaw_deg += 360;
159+
}
160+
161+
roll_sensor = roll_deg * 100;
162+
pitch_sensor = pitch_deg * 100;
163+
yaw_sensor = yaw_deg * 100;
159164
}
160165

161166
/*

libraries/AP_AHRS/AP_AHRS_View.cpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -70,12 +70,15 @@ void AP_AHRS_View::update()
7070

7171
rot_body_to_ned.to_euler(&roll, &pitch, &yaw);
7272

73-
roll_sensor = degrees(roll) * 100;
74-
pitch_sensor = degrees(pitch) * 100;
75-
yaw_sensor = degrees(yaw) * 100;
76-
if (yaw_sensor < 0) {
77-
yaw_sensor += 36000;
73+
roll_deg = degrees(roll);
74+
pitch_deg = degrees(pitch);
75+
yaw_deg = degrees(yaw);
76+
if (yaw_deg < 0) {
77+
yaw_deg += 360;
7878
}
79+
roll_sensor = roll_deg * 100;
80+
pitch_sensor = pitch_deg * 100;
81+
yaw_sensor = yaw_deg * 100;
7982

8083
ahrs.calc_trig(rot_body_to_ned,
8184
trig.cos_roll, trig.cos_pitch, trig.cos_yaw,

libraries/AP_AHRS/AP_AHRS_View.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,9 @@ class AP_AHRS_View
181181
float roll;
182182
float pitch;
183183
float yaw;
184+
float roll_deg;
185+
float pitch_deg;
186+
float yaw_deg;
184187
int32_t roll_sensor;
185188
int32_t pitch_sensor;
186189
int32_t yaw_sensor;

0 commit comments

Comments
 (0)