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

Skip to content
Snippets Groups Projects
Commit d3382f96 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

removed duplicate property (drivingBehavior vs. driverBehavior), moved...

removed duplicate property (drivingBehavior vs. driverBehavior), moved property from strategy to driver, moved vehiclestopped property to vehicle
parent c4ca9fab
No related branches found
No related tags found
No related merge requests found
Showing
with 69 additions and 50 deletions
......@@ -42,8 +42,6 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
public interface IDriverInfo
{
bool VehicleStopped { get; }
DrivingBehavior DrivingBehavior { get; }
DrivingBehavior DriverBehavior { get; }
}
}
\ No newline at end of file
......@@ -44,6 +44,8 @@ namespace TUGraz.VectoCore.Models.Simulation.DataBus
/// <value></value>
MeterPerSecond VehicleSpeed { get; }
bool VehicleStopped { get; }
Kilogram VehicleMass { get; }
Kilogram VehicleLoading { get; }
......
......@@ -210,7 +210,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public void CommitSimulationStep(Second time, Second simulationInterval)
{
Log.Info("VehicleContainer committing simulation. time: {0}, dist: {1}, speed: {2}", time, ExecutionMode==ExecutionMode.EngineOnly ? null : Distance, VehicleSpeed);
Log.Info("VehicleContainer committing simulation. time: {0}, dist: {1}, speed: {2}", time,
ExecutionMode == ExecutionMode.EngineOnly ? null : Distance, VehicleSpeed);
foreach (var component in Components) {
component.CommitSimulationStep(ModData);
}
......@@ -278,12 +279,12 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl
public bool VehicleStopped
{
get { return Driver.VehicleStopped; }
get { return Vehicle.VehicleStopped; }
}
public DrivingBehavior DrivingBehavior
public DrivingBehavior DriverBehavior
{
get { return Driver.DrivingBehavior; }
get { return Driver.DriverBehavior; }
}
public Meter CycleStartDistance
......
......@@ -126,5 +126,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
IDataBus DataBus { get; }
DriverData DriverData { get; }
DrivingBehavior DriverBehavior { set; }
}
}
\ No newline at end of file
......@@ -39,8 +39,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent
{
IDriverActions Driver { get; set; }
DrivingBehavior DriverBehavior { get; }
IResponse Request(Second absTime, Meter ds, MeterPerSecond targetVelocity, Radian gradient);
IResponse Request(Second absTime, Second dt, MeterPerSecond targetVelocity, Radian gradient);
......
......@@ -77,7 +77,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
// but this could lead to extrapolation of loss maps (in axlegear and gear).
// solution: we check here if the angularVelocity is 0 the first time and brake away all the torque if it is.
// afterwards the vehicle is standing and other mechanisms take over (Driver.DriveTimeInterval)
if (DataBus.DrivingBehavior == DrivingBehavior.Braking && !PreviousState.OutAngularVelocity.IsEqual(0) &&
if (DataBus.DriverBehavior == DrivingBehavior.Braking && !PreviousState.OutAngularVelocity.IsEqual(0) &&
angularVelocity.IsEqual(0)) {
brakeTorque = -torque;
if (!dryRun) {
......@@ -100,7 +100,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
{
BrakePower = 0.SI<Watt>();
PreviousState.SetState(torque, angularVelocity, torque, angularVelocity);
return DataBus.VehicleStopped
return DataBus.DriverBehavior == DrivingBehavior.Halted && DataBus.VehicleStopped
? NextComponent.Initialize(0.SI<NewtonMeter>(), 0.SI<PerSecond>())
: NextComponent.Initialize(torque, angularVelocity);
}
......
......@@ -178,7 +178,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
Auxiliaries.Signals.EngineDrivelineTorque = (float)torquePowerTrain.Value();
Auxiliaries.Signals.Internal_Engine_Power =
(float)((torqueEngine * angularSpeed - DataBus.BrakePower) / 1000).Value();
if (DataBus.DrivingBehavior == DrivingBehavior.Coasting) {
if (DataBus.DriverBehavior == DrivingBehavior.Coasting) {
// make sure smart aux are _not_ enabled for now
// set internal_engine_power a little bit lower so there is no excessive power for smart aux
Auxiliaries.Signals.Internal_Engine_Power =
......@@ -187,7 +187,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
// set internal_engine_power to a large value (*10) so that there's excessive power for smart aux (alreadin during search operating point)
//(float)DataBus.EngineDragPower(angularSpeed).Value() / 100;
} else {
if (DataBus.DrivingBehavior != DrivingBehavior.Braking) {
if (DataBus.DriverBehavior != DrivingBehavior.Braking) {
Auxiliaries.Signals.Internal_Engine_Power = 0;
//(float)((0.9 * torqueEngine * angularSpeed - DataBus.BrakePower) / 1000).Value();
} else {
......
......@@ -35,6 +35,7 @@ using TUGraz.VectoCore.Configuration;
using TUGraz.VectoCore.Models.Connector.Ports;
using TUGraz.VectoCore.Models.Simulation;
using TUGraz.VectoCore.Models.Simulation.Data;
using TUGraz.VectoCore.Models.Simulation.DataBus;
using TUGraz.VectoCore.Models.SimulationComponent.Data;
using TUGraz.VectoCore.OutputData;
using TUGraz.VectoCore.Utils;
......@@ -158,7 +159,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
torqueIn = torque;
angularVelocityIn = angularVelocity;
if (DataBus.VehicleStopped) {
if (DataBus.DriverBehavior == DrivingBehavior.Halted /*DataBus.VehicleStopped*/) {
_clutchState = ClutchState.ClutchOpened;
angularVelocityIn = _idleSpeed;
torqueIn = 0.SI<NewtonMeter>();
......
......@@ -56,6 +56,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
}
protected internal DrivingMode CurrentDrivingMode;
protected Dictionary<DrivingMode, IDriverMode> DrivingModes = new Dictionary<DrivingMode, IDriverMode>();
public DefaultDriverStrategy()
......@@ -112,15 +113,12 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
public IResponse Request(Second absTime, Second dt, MeterPerSecond targetVelocity, Radian gradient)
{
DriverBehavior = DrivingBehavior.Halted;
Driver.DriverBehavior = DrivingBehavior.Halted;
CurrentDrivingMode = DrivingMode.DrivingModeDrive;
return Driver.DrivingActionHalt(absTime, dt, targetVelocity, gradient);
}
public DrivingBehavior DriverBehavior { get; internal set; }
private void UpdateDrivingAction(Meter currentDistance, Meter ds)
{
var nextAction = GetNextDrivingAction(currentDistance, ds);
......@@ -341,7 +339,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
{
IResponse response = null;
DriverStrategy.DriverBehavior = DrivingBehavior.Driving;
Driver.DriverBehavior = DrivingBehavior.Driving;
var velocity = targetVelocity;
if (DriverStrategy.OverspeedAllowed(gradient, targetVelocity)) {
velocity += DriverData.OverSpeedEcoRoll.OverSpeed;
......@@ -520,7 +518,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
}
switch (Phase) {
case BrakingPhase.Coast:
DriverStrategy.DriverBehavior = DrivingBehavior.Coasting;
Driver.DriverBehavior = DrivingBehavior.Coasting;
response = DataBus.ClutchClosed(absTime)
? Driver.DrivingActionCoast(absTime, ds, VectoMath.Max(targetVelocity, DataBus.VehicleSpeed), gradient)
: Driver.DrivingActionRoll(absTime, ds, VectoMath.Max(targetVelocity, DataBus.VehicleSpeed), gradient);
......@@ -573,7 +571,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
if (targetDistance == null && DriverStrategy.BrakeTrigger.NextTargetSpeed.IsEqual(0.SI<MeterPerSecond>())) {
targetDistance = DriverStrategy.BrakeTrigger.TriggerDistance - DefaultDriverStrategy.BrakingSafetyMargin;
}
DriverStrategy.DriverBehavior = DrivingBehavior.Braking;
Driver.DriverBehavior = DrivingBehavior.Braking;
response = Driver.DrivingActionBrake(absTime, ds, DriverStrategy.BrakeTrigger.NextTargetSpeed,
gradient, targetDistance: targetDistance);
response.Switch().
......
......@@ -86,13 +86,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
"LookAhead Coasting Deceleration is lower than Driver's min. Deceleration. Coasting may start too late. Lookahead dec.: {0}, Driver min. deceleration: {1}",
DriverData.LookAheadCoasting.Deceleration, DriverData.AccelerationCurve.MinDeceleration());
}
VehicleStopped = vehicleSpeed.IsEqual(0);
DriverBehavior = vehicleSpeed.IsEqual(0) ? DrivingBehavior.Halted : DrivingBehavior.Driving;
return NextComponent.Initialize(vehicleSpeed, roadGradient);
}
public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient, MeterPerSquareSecond startAcceleration)
{
VehicleStopped = vehicleSpeed.IsEqual(0);
DriverBehavior = vehicleSpeed.IsEqual(0) ? DrivingBehavior.Halted : DrivingBehavior.Driving;
var retVal = NextComponent.Initialize(vehicleSpeed, roadGradient, startAcceleration);
return retVal;
......@@ -101,11 +101,10 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
public IResponse Request(Second absTime, Meter ds, MeterPerSecond targetVelocity, Radian gradient)
{
VehicleStopped = false;
Log.Debug("==== DRIVER Request (distance) ====");
Log.Debug(
"Request: absTime: {0}, ds: {1}, targetVelocity: {2}, gradient: {3} | distance: {4}, velocity: {5}, vehicle stopped: {6}",
absTime, ds, targetVelocity, gradient, DataBus.Distance, DataBus.VehicleSpeed, VehicleStopped);
absTime, ds, targetVelocity, gradient, DataBus.Distance, DataBus.VehicleSpeed, DataBus.VehicleStopped);
var retVal = DriverStrategy.Request(absTime, ds, targetVelocity, gradient);
//DoHandleRequest(absTime, ds, targetVelocity, gradient);
......@@ -120,11 +119,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
public IResponse Request(Second absTime, Second dt, MeterPerSecond targetVelocity, Radian gradient)
{
VehicleStopped = true;
//VehicleStopped = true;
Log.Debug("==== DRIVER Request (time) ====");
Log.Debug(
"Request: absTime: {0}, dt: {1}, targetVelocity: {2}, gradient: {3} | distance: {4}, velocity: {5} gear: {6}: vehicle stopped: {7}",
absTime, dt, targetVelocity, gradient, DataBus.Distance, DataBus.VehicleSpeed, DataBus.Gear, VehicleStopped);
absTime, dt, targetVelocity, gradient, DataBus.Distance, DataBus.VehicleSpeed, DataBus.Gear, DataBus.VehicleStopped);
var retVal = DriverStrategy.Request(absTime, dt, targetVelocity, gradient);
......@@ -814,16 +813,13 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
LimitDecelerationLookahead = 0x4
}
public DrivingBehavior DriverBehavior
{
get { return DriverStrategy.DriverBehavior; }
}
public DrivingBehavior DriverBehavior { get; set; }
public bool VehicleStopped { get; protected set; }
//public bool VehicleStopped { get; protected set; }
public DrivingBehavior DrivingBehavior
{
get { return DriverStrategy.DriverBehavior; }
}
//public DrivingBehavior DrivingBehavior
//{
// get { return DriverStrategy.DriverBehavior; }
//}
}
}
\ No newline at end of file
......@@ -325,7 +325,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
var inAngularVelocity = outAngularVelocity * ModelData.Gears[Gear].Ratio;
if (dryRun) {
if ((DataBus.DrivingBehavior == DrivingBehavior.Braking || DataBus.DrivingBehavior == DrivingBehavior.Coasting) &&
if ((DataBus.DriverBehavior == DrivingBehavior.Braking || DataBus.DriverBehavior == DrivingBehavior.Coasting) &&
inAngularVelocity < DataBus.EngineIdleSpeed && DataBus.VehicleSpeed < Constants.SimulationSettings.VehicleStopClutchDisengageSpeed) {
Disengaged = true;
_engageTime = absTime + dt;
......
......@@ -279,7 +279,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
/// <summary>
/// Always Driving.
/// </summary>
public DrivingBehavior DrivingBehavior
public DrivingBehavior DriverBehavior
{
get { return DrivingBehavior.Driving; }
}
......@@ -529,7 +529,7 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
get { return !_isInitializing && LeftSample.Current.VehicleTargetSpeed.IsEqual(0); }
}
public DrivingBehavior DrivingBehavior
public DrivingBehavior DriverBehavior
{
get { return DrivingBehavior.Driving; }
}
......
......@@ -132,6 +132,11 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl
get { return PreviousState.Velocity; }
}
public bool VehicleStopped
{
get { return PreviousState.Velocity.IsEqual(0.SI<MeterPerSecond>(), 0.01.SI<MeterPerSecond>()); }
}
public Kilogram VehicleMass
{
get { return ModelData.TotalCurbWeight(); }
......
......@@ -102,9 +102,10 @@ namespace TUGraz.VectoCore.Tests.Integration.BusAuxiliaries
var engine = new CombustionEngine(vehicle, modelData);
//new Vehicle(vehicle, new VehicleData());
driver = new MockDriver(vehicle) { VehicleStopped = false, DrivingBehavior = DrivingBehavior.Braking };
driver = new MockDriver(vehicle) { VehicleStopped = false, DriverBehavior = DrivingBehavior.Braking };
var gbx = new MockGearbox(vehicle) { Gear = 1 };
var brakes = new MockBrakes(vehicle);
var veh = new MockVehicle(vehicle) { MyVehicleSpeed = 50.KMPHtoMeterPerSecond() };
var busAux = new BusAuxiliariesAdapter(vehicle, auxFilePath, "Coach", vehicleWeight.SI<Kilogram>(),
fcMap, modelData.IdleSpeed);
return busAux;
......
......@@ -26,7 +26,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BusAuxiliaries
MockDriver driver;
var busAux = AuxDemandTest.CreateBusAuxAdapterForTesting(vehicleWeight, out driver);
driver.DrivingBehavior = DrivingBehavior.Driving;
driver.DriverBehavior = DrivingBehavior.Driving;
var engineDrivelinePower = (driveLinePower * 1000).SI<Watt>();
var engineSpeed = engineSpeedRpm.RPMtoRad();
......@@ -58,7 +58,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BusAuxiliaries
MockDriver driver;
var busAux = AuxDemandTest.CreateBusAuxAdapterForTesting(vehicleWeight, out driver);
driver.DrivingBehavior = DrivingBehavior.Coasting;
driver.DriverBehavior = DrivingBehavior.Coasting;
var engineDrivelinePower = (driveLinePower * 1000).SI<Watt>();
var engineSpeed = engineSpeedRpm.RPMtoRad();
......@@ -81,7 +81,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BusAuxiliaries
MockDriver driver;
var busAux = AuxDemandTest.CreateBusAuxAdapterForTesting(vehicleWeight, out driver);
driver.DrivingBehavior = DrivingBehavior.Braking;
driver.DriverBehavior = DrivingBehavior.Braking;
var engineDrivelinePower = (driveLinePower * 1000).SI<Watt>();
var engineSpeed = engineSpeedRpm.RPMtoRad();
......@@ -101,7 +101,7 @@ namespace TUGraz.VectoCore.Tests.Integration.BusAuxiliaries
MockDriver driver;
var busAux = AuxDemandTest.CreateBusAuxAdapterForTesting(vehicleWeight, out driver);
driver.DrivingBehavior = DrivingBehavior.Driving;
driver.DriverBehavior = DrivingBehavior.Driving;
//var engineSpeedRpm = 1375.1014;
......
......@@ -32,6 +32,7 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCommon.Models;
using TUGraz.VectoCommon.Utils;
using TUGraz.VectoCore.Models.Simulation.DataBus;
using TUGraz.VectoCore.Models.Simulation.Impl;
using TUGraz.VectoCore.Models.SimulationComponent.Impl;
using TUGraz.VectoCore.Tests.Utils;
......@@ -73,14 +74,15 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
Assert.AreEqual(62.119969, outPort.AngularVelocity.Value(), 0.001);
//Test - Clutch opened
driver.VehicleStopped = true;
driver.DriverBehavior = DrivingBehavior.Halted; // = true;
clutchOutPort.Request(0.SI<Second>(), 0.SI<Second>(), 100.SI<NewtonMeter>(), 30.SI<PerSecond>());
Assert.AreEqual(0, outPort.Torque.Value(), 0.001);
Assert.AreEqual(engineData.IdleSpeed.Value(), outPort.AngularVelocity.Value(), 0.001);
//Test - Clutch closed
driver.VehicleStopped = false;
driver.DriverBehavior = DrivingBehavior.Driving; // = false;
clutchOutPort.Request(0.SI<Second>(), 0.SI<Second>(), 100.SI<NewtonMeter>(), 80.SI<PerSecond>());
Assert.AreEqual(100.0, outPort.Torque.Value(), 0.001);
......
......@@ -137,6 +137,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = new VehicleContainer(ExecutionMode.Engineering);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 0.KMPHtoMeterPerSecond() };
var port = new MockTnOutPort();
gearbox.InPort().Connect(port);
container.Engine = port;
......@@ -174,6 +176,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = new VehicleContainer(ExecutionMode.Declaration);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 0.KMPHtoMeterPerSecond() };
var port = new MockTnOutPort();
gearbox.InPort().Connect(port);
container.Engine = port;
......@@ -211,6 +215,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = new VehicleContainer(executionMode: ExecutionMode.Engineering);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 0.KMPHtoMeterPerSecond() };
var port = new MockTnOutPort();
gearbox.InPort().Connect(port);
container.Engine = port;
......@@ -248,6 +254,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = new VehicleContainer(ExecutionMode.Engineering);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 0.KMPHtoMeterPerSecond() };
var port = new MockTnOutPort();
gearbox.InPort().Connect(port);
container.Engine = port;
......@@ -295,6 +303,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var container = new VehicleContainer(ExecutionMode.Engineering);
var gearboxData = MockSimulationDataFactory.CreateGearboxDataFromFile(GearboxDataFile, EngineDataFile);
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 0.KMPHtoMeterPerSecond() };
var driver = new MockDriver(container);
var port = new MockTnOutPort();
......@@ -343,6 +352,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent
var gearbox = new Gearbox(container, gearboxData, new AMTShiftStrategy(gearboxData, container));
var driver = new MockDriver(container);
var vehicle = new MockVehicle(container) { MyVehicleSpeed = 0.KMPHtoMeterPerSecond() };
var port = new MockTnOutPort();
gearbox.InPort().Connect(port);
......
......@@ -48,7 +48,7 @@ namespace TUGraz.VectoCore.Tests.Utils
public MockDriver(IVehicleContainer container) : base(container)
{
DrivingBehavior = DrivingBehavior.Accelerating;
DriverBehavior = DrivingBehavior.Accelerating;
}
protected override void DoWriteModalResults(IModalDataContainer container) {}
......@@ -116,6 +116,6 @@ namespace TUGraz.VectoCore.Tests.Utils
public bool VehicleStopped { get; set; }
public DrivingBehavior DrivingBehavior { get; set; }
public DrivingBehavior DriverBehavior { get; set; }
}
}
\ No newline at end of file
......@@ -90,7 +90,7 @@ namespace TUGraz.VectoCore.Tests.Utils
}
public bool VehicleStopped { get; private set; }
public DrivingBehavior DrivingBehavior { get; private set; }
public DrivingBehavior DriverBehavior { get; private set; }
public CycleData CycleData { get; set; }
public ExecutionMode ExecutionMode { get; set; }
public IModalDataContainer ModalData { get; private set; }
......
......@@ -68,6 +68,11 @@ namespace TUGraz.VectoCore.Tests.Utils
get { return MyVehicleSpeed; }
}
public bool VehicleStopped
{
get { return MyVehicleSpeed.IsEqual(0.SI<MeterPerSecond>(), 0.01.SI<MeterPerSecond>()); }
}
public Kilogram VehicleMass
{
get { return 7500.SI<Kilogram>(); }
......@@ -96,7 +101,7 @@ namespace TUGraz.VectoCore.Tests.Utils
acceleration = acceleration,
gradient = gradient
};
return new ResponseSuccess() { Source = this};
return new ResponseSuccess() { Source = this };
}
public IResponse Initialize(MeterPerSecond vehicleSpeed, Radian roadGradient)
......
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