Skip to content

Commit 92da74b

Browse files
committed
feat: add steering line to telemetry chart. Resolves #3
1 parent a24b7fa commit 92da74b

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

src/live/telemetry_view.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ impl LiveTelemetryApp {
9595
self.telemetry_points.iter().enumerate().all(|p| {
9696
throttle_vec.push([p.0 as f64, p.1.throttle as f64 * 100.]);
9797
brake_vec.push([p.0 as f64, p.1.brake as f64 * 100.]);
98-
steering_vec.push([p.0 as f64, p.1.steering as f64]);
98+
steering_vec.push([p.0 as f64, 50. + 50. * p.1.steering_pct as f64]);
9999
true
100100
});
101101

102102
let throttle_points = PlotPoints::new(throttle_vec);
103103
let brake_points = PlotPoints::new(brake_vec);
104-
//let steering_points = PlotPoints::new(steering_vec);
104+
let steering_points = PlotPoints::new(steering_vec);
105105

106106
plot.show_background(false).show(ui, |plot_ui| {
107107
plot_ui.line(
@@ -126,6 +126,11 @@ impl LiveTelemetryApp {
126126
.fill(0.)
127127
.name("Brake"),
128128
);
129+
plot_ui.line(
130+
Line::new(steering_points)
131+
.color(Color32::LIGHT_GRAY)
132+
.name("Steering"),
133+
);
129134
});
130135
});
131136
// make it always repaint. TODO: can we slow down here?

src/telemetry/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ pub struct TelemetryPoint {
5555
pub brake: f32,
5656
/// Steering wheel angle
5757
pub steering: f32,
58+
// steering angle as a % of max steering
59+
pub steering_pct: f32,
5860
/// Whether ABS is currently active
5961
pub abs_active: bool,
6062
/// Latitude in decimal degrees
@@ -102,6 +104,7 @@ impl Default for TelemetryPoint {
102104
throttle: 0.,
103105
brake: 0.,
104106
steering: 0.,
107+
steering_pct: 0.,
105108
abs_active: false,
106109
lat: 0.,
107110
lon: 0.,

src/telemetry/producer.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ use crate::OcypodeError;
1111
use super::{SessionInfo, TelemetryPoint, TireInfo};
1212

1313
const CONN_RETRY_WAIT_MS: u64 = 200;
14+
const MAX_STEERING_ANGLE_DEFAULT: f32 = std::f32::consts::PI;
1415
pub(crate) const CONN_RETRY_MAX_WAIT_S: u64 = 600;
1516

1617
pub trait SimplifiedTelemetryAccess {
@@ -187,7 +188,6 @@ impl TelemetryProducer for IRacingTelemetryProducer {
187188
description: "Could not retrieve telemetry",
188189
}
189190
})?;
190-
191191
Ok(SessionInfo {
192192
track_name: ir_session_info.weekend.track_name,
193193
max_steering_angle: telemetry.get_float("SteeringWheelAngleMax").unwrap_or(0.),
@@ -212,6 +212,15 @@ impl TelemetryProducer for IRacingTelemetryProducer {
212212
}
213213
})?;
214214

215+
let steering_pct = if telemetry.get_float("SteeringWheelAngle").unwrap_or(0.)
216+
> MAX_STEERING_ANGLE_DEFAULT
217+
{
218+
telemetry.get_float("SteeringWheelAngle").unwrap_or(0.)
219+
/ telemetry.get_float("SteeringWheelAngleMax").unwrap_or(0.)
220+
} else {
221+
telemetry.get_float("SteeringWheelAngle").unwrap_or(0.) / MAX_STEERING_ANGLE_DEFAULT
222+
};
223+
215224
let measurement = TelemetryPoint {
216225
point_no: self.point_no,
217226
lap_dist: telemetry.get_float("LapDist").unwrap_or(0.),
@@ -226,6 +235,8 @@ impl TelemetryProducer for IRacingTelemetryProducer {
226235
throttle: telemetry.get_float("Throttle").unwrap_or(0.),
227236
brake: telemetry.get_float("BrakeRaw").unwrap_or(0.),
228237
steering: telemetry.get_float("SteeringWheelAngle").unwrap_or(0.),
238+
// this might result in an unhappy division by 0. Do we want to panic in this case because it's unexpected?
239+
steering_pct,
229240
abs_active: telemetry.get_bool("BrakeABSactive").unwrap_or(false),
230241
lat: telemetry.get_float("Lat").unwrap_or(0.),
231242
lon: telemetry.get_float("Lon").unwrap_or(0.),

0 commit comments

Comments
 (0)