Source code for suboptimumg.vehicle.driver_interface.driver_interface
from ...constants import *
from ..models import VehicleModel
[docs]
class DriverInterface:
def __init__(
self,
vehicle_model: VehicleModel,
):
self.vehicle_model = vehicle_model
self.params = vehicle_model.dri
[docs]
def calc_force_ratio(self):
"""
Calculate the force ratio between front and rear brakes.
Returns
-------
float
Force ratio where f_front = f_rear * force_ratio
"""
# Calculate force ratio (front/rear) from brake bias
return self.params.brake_bias / (1 - self.params.brake_bias)
[docs]
def update_forces(self, front_min_f, rear_min_f):
"""
Update tire forces based on brake bias.
Parameters
----------
front_min_f : float
Minimum acceleration force between front tires
rear_min_f : float
Minimum acceleration force between rear tires
Returns
-------
tuple
Updated (front_min_f, rear_min_f) values that respect brake bias
"""
force_ratio = self.calc_force_ratio()
# Calculate limits based on force ratio
front_limit = rear_min_f * force_ratio
rear_limit = front_min_f / force_ratio
# Apply limits to ensure brake bias is maintained
updated_front_min_f = min(front_min_f, front_limit)
updated_rear_min_f = min(rear_min_f, rear_limit)
return updated_front_min_f, updated_rear_min_f