diff --git a/TorcsEMAMGenerator/src/main/models/dp/Mastercomponent.emadl b/TorcsEMAMGenerator/src/main/models/dp/Mastercomponent.emadl index 14bd68bd352b0868882d98eddbac65a879a0eef7..d69b4ca1abc961193b429049ca70c786156e6484 100644 --- a/TorcsEMAMGenerator/src/main/models/dp/Mastercomponent.emadl +++ b/TorcsEMAMGenerator/src/main/models/dp/Mastercomponent.emadl @@ -3,21 +3,22 @@ import dp.subcomponents.*; component Mastercomponent { ports - in Q(0:255)^{3, 210, 280} imageIn, + in Z(0:255)^{3, 210, 280} imageIn, in Q(0 m/s:0.1 m/s:100 m/s) speedIn, out Q(-1:1)^{3} commandsOut; instance Dpnet dpnet; instance DriverController driverController; - instance Unnormalizer unnorm; - instance KFMastercomponent kfm; + instance Denormalizer denorm; + //instance KFMastercomponent kfm; instance SteeringBuffer steeringBuffer; connect imageIn -> dpnet.data; - connect dpnet.predictions -> unnorm.normalizedPredictions; + connect dpnet.predictions -> denorm.normalizedPredictions; - connect unnorm.affordance -> kfm.affordanceIn; - connect kfm.affordanceSmoothed -> driverController.affordanceIn; + //connect denorm.affordance -> kfm.affordanceIn; + //connect kfm.affordanceSmoothed -> driverController.affordanceIn; + connect denorm.affordance -> driverController.affordanceIn; connect steeringBuffer.outputBuffer -> driverController.steeringRecordIn; connect speedIn -> driverController.speedIn; diff --git a/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Denormalizer.emadl b/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Denormalizer.emadl new file mode 100644 index 0000000000000000000000000000000000000000..2a8d4ef029e0880b003a4974da04a4a9ec333e81 --- /dev/null +++ b/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Denormalizer.emadl @@ -0,0 +1,33 @@ +package dp.subcomponents; + +import changeRange; + +component Denormalizer { + ports in Q^{14} normalizedPredictions, + out Affordance affordance; + + implementation Math { + + function changeRange(oldMin, oldMax, newMin, newMax, oldValue){ + (((oldValue - oldMin) * (newMax - newMin)) / (oldMax - oldMin)) + newMin + } + + Q oldMin = 0.1; + Q oldMax = 0.9; + + affordance.angle = changeRange(oldMin, oldMax, -0.5, 0.5, normalizedPredictions(0)); + affordance.toMarkingL = changeRange(oldMin, oldMax, -7, -2.5, normalizedPredictions(1)); + affordance.toMarkingM = changeRange(oldMin, oldMax, -2, 3.5, normalizedPredictions(2)); + affordance.toMarkingR = changeRange(oldMin, oldMax, 2.5, 7, normalizedPredictions(3)); + affordance.distL = changeRange(oldMin, oldMax, 0, 75, normalizedPredictions(4)); + affordance.distR = changeRange(oldMin, oldMax, 0, 75, normalizedPredictions(5)); + affordance.toMarkingLL = changeRange(oldMin, oldMax, -9.5, -4, normalizedPredictions(6)); + affordance.toMarkingML = changeRange(oldMin, oldMax, -5.5, -0.5, normalizedPredictions(7)); + affordance.toMarkingMR = changeRange(oldMin, oldMax, 0.5, 5.5, normalizedPredictions(8)); + affordance.toMarkingRR = changeRange(oldMin, oldMax, 4, 9.5, normalizedPredictions(9)); + affordance.distLL = changeRange(oldMin, oldMax, 0, 75, normalizedPredictions(10)); + affordance.distMM = changeRange(oldMin, oldMax, 0, 75, normalizedPredictions(11)); + affordance.distRR = changeRange(oldMin, oldMax, 0, 75, normalizedPredictions(12)); + affordance.fast = changeRange(oldMin, oldMax, 0, 1, normalizedPredictions(13)); + } +} diff --git a/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Dpnet.emadl b/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Dpnet.emadl index 750dad8db7e67cabe8d20e4895b105b4fe8e5371..3b11ebdc476f08cf8804779d8c504c8f5adef765 100644 --- a/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Dpnet.emadl +++ b/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Dpnet.emadl @@ -2,7 +2,7 @@ package dp.subcomponents; component Dpnet{ - ports in Q(0:255)^{3, 210, 280} data, + ports in Z(0:255)^{3, 210, 280} data, out Q(-oo:oo)^{14} predictions; implementation CNN { diff --git a/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Unnormalizer.emadl b/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Unnormalizer.emadl deleted file mode 100644 index 50ee1e0d7f50afebc98f2add008ccccf88bf703d..0000000000000000000000000000000000000000 --- a/TorcsEMAMGenerator/src/main/models/dp/subcomponents/Unnormalizer.emadl +++ /dev/null @@ -1,70 +0,0 @@ -package dp.subcomponents; - -component Unnormalizer { - ports in Q^{14} normalizedPredictions, - out Affordance affordance; - - implementation Math { - Q oldMin = 0.1; - Q oldMax = 0.9; - Q oldRange = oldMax - oldMin; - - Q newMin = -0.5; - Q newMax = 0.5; - Q newRange = newMax - newMin; - affordance.angle = (((normalizedPredictions(0) - oldMin) * newRange) / oldRange) + newMin; - - newMin = -7; - newMax = -2.5; - newRange = newMax - newMin; - affordance.toMarkingL = (((normalizedPredictions(1) - oldMin) * newRange) / oldRange) + newMin; - - newMin = -2; - newMax = 3.5; - newRange = newMax - newMin; - affordance.toMarkingM = (((normalizedPredictions(2) - oldMin) * newRange) / oldRange) + newMin; - - newMin = 2.5; - newMax = 7; - newRange = newMax - newMin; - affordance.toMarkingR = (((normalizedPredictions(3) - oldMin) * newRange) / oldRange) + newMin; - - newMin = 0; - newMax = 75; - newRange = newMax - newMin; - affordance.distL = (((normalizedPredictions(4) - oldMin) * newRange) / oldRange) + newMin; - affordance.distR = (((normalizedPredictions(5) - oldMin) * newRange) / oldRange) + newMin; - - newMin = -9.5; - newMax = -4; - newRange = newMax - newMin; - affordance.toMarkingLL = (((normalizedPredictions(6) - oldMin) * newRange) / oldRange) + newMin; - - newMin = -5.5; - newMax = -0.5; - newRange = newMax - newMin; - affordance.toMarkingML = (((normalizedPredictions(7) - oldMin) * newRange) / oldRange) + newMin; - - newMin = 0.5; - newMax = 5.5; - newRange = newMax - newMin; - affordance.toMarkingMR = (((normalizedPredictions(8) - oldMin) * newRange) / oldRange) + newMin; - - newMin = 4; - newMax = 9.5; - newRange = newMax - newMin; - affordance.toMarkingRR = (((normalizedPredictions(9) - oldMin) * newRange) / oldRange) + newMin; - - newMin = 0; - newMax = 75; - newRange = newMax - newMin; - affordance.distLL = (((normalizedPredictions(10) - oldMin) * newRange) / oldRange) + newMin; - affordance.distMM = (((normalizedPredictions(11) - oldMin) * newRange) / oldRange) + newMin; - affordance.distRR = (((normalizedPredictions(12) - oldMin) * newRange) / oldRange) + newMin; - - newMin = 0; - newMax = 1; - newRange = newMax - newMin; - affordance.fast = (((normalizedPredictions(13) - oldMin) * newRange) / oldRange) + newMin; - } -}