Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 3b9c1195 authored by Markus QUARITSCH's avatar Markus QUARITSCH
Browse files

limit max speed for buses to 103 km/h in case of overspeed (in combination with PCC UC3)

parent 8908aa3c
No related branches found
No related tags found
No related merge requests found
......@@ -127,6 +127,14 @@ namespace TUGraz.VectoCommon.Models
}
}
public static bool IsBus(this VehicleCategory category)
{
switch (category) {
case VehicleCategory.HeavyBusPrimaryVehicle: return true;
default: return false;
}
}
public static VehicleCategory Parse(string vehicleCategory)
{
switch (vehicleCategory) {
......
......@@ -201,6 +201,8 @@ namespace TUGraz.VectoCore.Configuration
public static readonly Meter HeightLuggageCompartment = 0.5.SI<Meter>();
public static readonly SIBase<Meter> EntranceHeight = 0.27.SI<Meter>();
public static readonly MeterPerSecond MaxBusSpeed = 103.KMPHtoMeterPerSecond();
public static class Auxiliaries
{
public static class SteeringPump
......
......@@ -89,6 +89,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
DrivingModes.Add(DrivingMode.DrivingModeBrake, new DriverModeBrake() { DriverStrategy = this });
CurrentDrivingMode = DrivingMode.DrivingModeDrive;
VehicleCategory = container?.RunData.VehicleData.VehicleCategory ?? VehicleCategory.Unknown;
var data = container?.RunData;
ADAS = data?.VehicleData?.ADAS ?? new VehicleData.ADASData() {
EcoRoll = EcoRollType.None,
......@@ -118,6 +120,8 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
}
}
public VehicleCategory VehicleCategory { get; set; }
public IDriverActions Driver { get; set; }
protected internal DrivingBehaviorEntry BrakeTrigger { get; set; }
......@@ -426,7 +430,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var accelerationPedalIdle = EcoRollState.AcceleratorPedalIdle;
var brakeActive = !EcoRollState.PreviousBrakePower.IsEqual(0);
var vehcleSpeedBelowMax = dBus.VehicleSpeed <=
dBus.CycleData.LeftSample.VehicleTargetSpeed + GetOverspeed() - 2.KMPHtoMeterPerSecond();
(ApplyOverspeed(dBus.CycleData.LeftSample.VehicleTargetSpeed) - 2.KMPHtoMeterPerSecond());
EcoRollState.AllConditionsMet = vehicleSpeedAboveLowerThreshold && vehcleSpeedBelowMax && slopeNegative && accelerationWithinLimits &&
accelerationPedalIdle && !brakeActive;
......@@ -562,6 +566,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
}
}
public MeterPerSecond ApplyOverspeed(MeterPerSecond targetSpeed)
{
return (targetSpeed + GetOverspeed()).LimitTo(
0.KMPHtoMeterPerSecond(), VehicleCategory.IsBus() ? Constants.BusParameters.MaxBusSpeed : 500.KMPHtoMeterPerSecond());
}
protected internal MeterPerSecond GetOverspeed()
{
return ADAS.PredictiveCruiseControl == PredictiveCruiseControlType.Option_1_2_3 && Driver.DataBus.CycleData.LeftSample.Highway
......@@ -583,7 +594,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var nextActions = new List<DrivingBehaviorEntry>();
foreach (var entry in lookaheadData) {
var nextTargetSpeed = OverspeedAllowed(entry.VehicleTargetSpeed)
? entry.VehicleTargetSpeed + GetOverspeed()
? ApplyOverspeed(entry.VehicleTargetSpeed)
: entry.VehicleTargetSpeed;
if (nextTargetSpeed >= currentSpeed) {
// acceleration is not relevant
......@@ -689,7 +700,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
return Driver.DriverData.OverSpeed.Enabled
&& velocity > Driver.DriverData.OverSpeed.MinSpeed
&& (velocity + GetOverspeed()) <
&& ApplyOverspeed(velocity) <
(Driver.DataBus.MaxVehicleSpeed ?? 500.KMPHtoMeterPerSecond());
}
}
......@@ -828,8 +839,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
Driver.DriverBehavior = DrivingBehavior.Driving;
var velocityWithOverspeed = targetVelocity;
if (DriverStrategy.OverspeedAllowed(targetVelocity, prohibitOverspeed)) {
velocityWithOverspeed += DriverStrategy.GetOverspeed();
velocityWithOverspeed = DriverStrategy.ApplyOverspeed(velocityWithOverspeed);
}
if (DataBus.GearboxType.AutomaticTransmission() || DataBus.ClutchClosed(absTime)) {
for (var i = 0; i < 3; i++) {
var retVal = HandleRequestEngaged(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment